如何跨SOAP Web服务传播异常

本文关键字:传播 异常 服务 Web 何跨 SOAP | 更新日期: 2023-09-27 18:13:25

我有一个标准的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异常发送?以某种方式连载?

如何跨SOAP Web服务传播异常

根据MSDN:

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

也就是说,没有什么可以阻止你创建一个异常包装器类并序列化它,就像这篇文章中建议的@davogones:

如何序列化c#中的Exception对象?

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