我试图在WCF客户端上捕获给定的FaultException.我基本上需要从fault类中提取内部描述,然后我可以将它打包到另一个异常中,以便上层执行任何操作.
我已经成功完成了很多次,这次使它与众不同的是故障被声明为一个数组,正如您在抛出异常的方法之上声明的服务引用属性所看到的那样:
[System.ServiceModel.FaultContractAttribute(typeof(FaultClass[]), Action = "http://whatever/", Name = "whateverBusinessFault")]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
try
{
// call service here
}
catch (FaultException<FaultClass[]> ex)
{
if (ex.Detail != null && ex.Detail.Length > 0)
{
throw new CustomException(ex.Detail[0].description);
}
else
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是细节(这是一个数组)总是在代码中变回空,即使我可以在WCF跟踪的SOAP响应中看到数据(描述字段等).
所以我需要的东西肯定会回来,但由于某种原因要么它没有被反序列化,要么我无法从代码中获得它.
任何帮助赞赏!
更新:
尝试@Darin建议但没有运气,我从XmlReader中提取的字符串是"/ r/n":
var sb = new StringBuilder();
using (XmlReader reader = fault.GetReaderAtDetailContents())
{
while (reader.Read())
sb.AppendLine(reader.ReadOuterXml());
}
var detail = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
看起来细节部分根本没有出现!
又一个列表比较问题.
List<MyType> list1;
List<MyType> list2;
Run Code Online (Sandbox Code Playgroud)
我需要检查它们是否具有相同的元素,无论它们在列表中的位置如何.每个MyType对象可能在列表中出现多次.是否有内置函数可以检查这个?如果我保证每个元素只在列表中出现一次怎么办?
编辑:伙计们感谢答案,但我忘了添加一些东西,每个元素的出现次数在两个列表上都应该相同.
我可以从一个块创建一个Ruby哈希吗?
像这样的东西(虽然这特别不起作用):
foo = Hash.new do |f|
f[:apple] = "red"
f[:orange] = "orange"
f[:grape] = "purple"
end
Run Code Online (Sandbox Code Playgroud) 所以,我有这些参数的div:
container {
position:fixed;
background-color: rgba(50,50,50,0.7);
width:100%;
height:100%;
display:none;}
Run Code Online (Sandbox Code Playgroud)
它包含未知大小的图像(大小是dinamic,它可能是不同的).
我需要垂直和水平对齐图像.
请帮忙
我对Clojure/Lisp宏不是很熟悉.我想写apply-recur一个与其含义相同的宏(apply recur ...)
我想这个宏并不是真的需要,但我认为这是一个很好的练习.所以我要求你的解决方案.
我目前在从db中提取所有数据时遇到问题,即1参数为TRUE.
我正在使用NSPredicate,下面是一个示例代码
NSManagedObjectContext *context = managedObjectContext_;
if (!context) {
// Handle the error.
NSLog(@"ERROR CONTEXT IS NIL");
}
NSEntityDescription *entity = [NSEntityDescription entityForName:@"tblcontent" inManagedObjectContext:managedObjectContext_];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"bookmarked == YES"];
[request setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
我尝试将predicatewithformat设置为几乎所有内容,但它仍然没有拉出具有YES值的书签.
我甚至试过(@"bookmarked == %d",YES)但没有运气.我不想得到整个数组,然后通过做if(object.bookmarked == YES)..... blabla 手动过滤它.
我真的很感激一些帮助.
非常感谢.
我想声明将在项目中的各个类中使用的字符串常量.我正在考虑两种选择
选项1:
#header file
class constants{
static const string const1;
};
#cpp file
const string constants::const1="blah";
Run Code Online (Sandbox Code Playgroud)
选项2:
#header file
namespace constants{
static const string const1="blah";
};
Run Code Online (Sandbox Code Playgroud)
只是想知道什么是更好的实现.
已经看过了
更新:
选项3:
根据"potatoswatter"和"sellibitze"的建议,我目前有以下实施方案?
#header file
namespace constants{
extern const string& const1(); //WORKS WITHOUT THE EXTERN ***WHY***
};
#cpp file
namespace constants{
const string& const1(){static string* str = new string ("blah"); return *str;}
}
Run Code Online (Sandbox Code Playgroud)
我包含头文件,我需要使用常量.这种实施有什么主要缺点吗?
我想手动与管道进行交互,但到目前为止我只能在程序中执行此操作,这不是很直观.
我想要达到的效果有点类似于:
telnet localhost 3306
tail -f file.txt
Run Code Online (Sandbox Code Playgroud)
谁有我的想法?
我有一个长字符串(8000个字符),应该只包含十六进制和换行符.
验证/验证字符串是否包含无效字符的最佳方法是什么?
有效字符为:0到9和A到F.换行符应该是可接受的.
我从这段代码开始,但它无法正常工作(即当"G"是第一个字符时无法返回false):
public static bool VerifyHex(string _hex)
{
Regex r = new Regex(@"^[0-9A-F]+$", RegexOptions.Multiline);
return r.Match(_hex).Success;
}
Run Code Online (Sandbox Code Playgroud) c# ×2
alignment ×1
antivirus ×1
block ×1
c++ ×1
clojure ×1
comparison ×1
constants ×1
core-data ×1
css ×1
database ×1
equals ×1
fault ×1
hash ×1
iphone ×1
lisp ×1
list ×1
macros ×1
named-pipes ×1
namespaces ×1
nspredicate ×1
objective-c ×1
ruby ×1
string ×1
validation ×1
virus ×1
wcf ×1
windows ×1