我有一个 Web 服务方法,我想在其中抛出一些自定义异常,例如 SomeException、SomeOtherException 等,然后 Web 服务将变成客户端能够处理的 SOAP 错误。在 Java 中,我可以在 WSDL 的 wsdl:operation 元素中包含 wsdl:fault 元素。.NET 似乎不适合这种情况,并且无法将属性放在 WebMethod 上以显示可能发生的 SOAP 错误。
如果我创建一个具有 wsdl:fault 元素的 Java Web 服务并添加对 .NET 项目的 Web 引用,我会期望 wsdl:fault 元素会导致创建适当命名的异常,就像创建其他实体一样,但是这似乎并非如此。
.NET 是否完全忽略了 WSDL 中的 wsdl:fault 元素?它们是http://www.w3.org/TR/wsdl中定义的 WSDL 规范的一部分,所以这不是我所期望的行为。
如果是这种情况,可能的解决方法可能是返回一个包含成功/失败布尔值和错误消息/枚举的结果对象。或者通过使用 SoapExceptions。如果我选择使用 SoapExceptions,那么我会将重点放在我的 Web 服务的用户上,以处理这些并正确反序列化它。这两种方法似乎都不是处理这个问题的好方法,并添加了额外的问题和代码来解决这个问题。
有什么建议吗?