gpt4 book ai didi

c# - .NET 2.0 Web 服务 WSDL 错误元素被忽略?

转载 作者:行者123 更新时间:2023-11-30 20:14:14 25 4
gpt4 key购买 nike

我有一个网络服务方法,我想在其中抛出一些自定义异常,例如SomeException、SomeOtherException 等 Web 服务随后将转换为客户端能够处理的 SOAP 错误。在 Java 中,我可以在 WSDL 的 wsdl:operation 元素中包含 wsdl:fault 元素。 .NET 似乎没有满足这一要求,并且无法在 WebMethod 上放置属性来显示可能发生的 SOAP 错误。

如果我创建一个具有 wsdl:fault 元素的 Java Web 服务并向 .NET 项目添加 Web 引用,我会期望 wsdl:fault 元素会导致创建适当命名的异常,就像创建其他实体一样,但情况似乎并非如此。

是否存在 WSDL 中的 wsdl:fault 元素被 .NET 完全忽略的情况?它们是 http://www.w3.org/TR/wsdl 中定义的 WSDL 规范的一部分。所以这不是我所期望的行为。

如果是这种情况,可能的解决方法可能是返回一个结果对象,其中包含成功/失败 bool 值和错误消息/枚举。或者使用 SoapExceptions。如果我选择使用 SoapExceptions,那么我会强调 Web 服务的用户来处理这些异常并正确反序列化它。这两种方法似乎都不是处理此问题的好方法,并且会添加额外的问题和代码来解决此问题。

有什么建议吗?

最佳答案

既然您要求使用 .net 2.0,我想您知道这在 WCF 中是“固定的”,您可以在其中添加属性 [FaultContract(typeof(YourCustomException))]。

在 2.0 中完成此操作的“正常”方式就像您所说的那样,添加带有 success-boolean、Result 和 Error 属性的响应消息。

您通常可以在 EntLib 中了解这是如何完成的。

关于c# - .NET 2.0 Web 服务 WSDL 错误元素被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/747606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com