2

我有一个标准的 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 异常发送?也许以某种方式对其进行序列化?

4

2 回答 2

1

根据 MSDN:

'[...] XML Web 服务方法抛出的任何异常都作为 SoapException[...]',在 XML Web 服务中处理和抛出异常

也就是说,没有什么能阻止您创建异常包装器类并将其序列化,就像@davogones 在这篇文章中建议的那样:

如何在 C# 中序列化异常对象?

于 2013-05-14T16:22:43.137 回答
1

使您的自定义异常继承自 SoapException

于 2013-05-14T16:17:17.553 回答