我有一个标准的ASMX Web服务。我想抛出一个自定义异常并让它在客户端被捕获。唯一遇到的是SoapException。例如:
// Server side code
[WebMethod]
public void foo(string bar) {
throw new CustomException(bar);
}
public class CustomException : Exception {
....
}
// Client side code
public void CallFoo() {
try {
service.foo()
}
catch (CustomException ex) {
Console.WriteLine(ex.Message);
}
catch (SoapException ex) {
Console.WriteLine("IT ALWAYS HITS HERE");
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
有没有办法通过我的CustomException异常发送?或许以某种方式序列化它?
答案 0 :(得分:1)
使您的自定义异常继承自SoapException
答案 1 :(得分:1)
根据MSDN:
'[...] XML Web服务方法抛出的任何异常都被抛出为SoapException [...]',Handling and Throwing Exceptions in XML Web Services。
也就是说,没有什么可以阻止你创建一个异常包装类并将其序列化,就像这篇文章中提到的@davogones一样: