【发布时间】:2010-09-19 13:28:48
【问题描述】:
我们正在开发一项新的网络服务,并正在研究在肥皂响应中返回错误的“最佳做法”。
我们正在考虑创建一个错误响应对象,每个响应都将包含一个属性。然而,这似乎有点重,想知道是否可以使用 SOAP 标头来携带这些信息?您通常如何使用 SOAP 处理自定义错误?
【问题讨论】:
标签: c# .net web-services soap error-handling
我们正在开发一项新的网络服务,并正在研究在肥皂响应中返回错误的“最佳做法”。
我们正在考虑创建一个错误响应对象,每个响应都将包含一个属性。然而,这似乎有点重,想知道是否可以使用 SOAP 标头来携带这些信息?您通常如何使用 SOAP 处理自定义错误?
【问题讨论】:
标签: c# .net web-services soap error-handling
Soap 已经使用自定义标头来获取错误信息,您只需在服务器端抛出异常,并在客户端以SoapException 的形式引发异常。
如果您想更好地控制异常消息/信息,可以在服务器端抛出 SoapExceptions。
编辑: 有关请求的额外信息,可以使用自定义的 soap 标头。这是一个example article on CodeProject,它使用自定义soap标头进行身份验证,但自定义soap标头可用于其他目的,例如发送不一定是错误条件的额外信息(可以是业务逻辑信息)
【讨论】:
SOAPFault 用于保存错误和状态信息,服务器在 HTTP 标头中返回 500 以将其声明为错误。
参见 W3.org 的规范
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507
只要您为第三方清楚地记录它,您就可以通过将其放置在肥皂标题中甚至在返回结果的元素中来设计自己的信息令牌。但是,这不是引发错误的标准方法。
【讨论】:
我过去曾将类似的技术用于复杂的操作。尤其是当您需要(多个?)错误描述以及错误代码时。
【讨论】:
Soap 标头用于带外信息,不应用于错误消息。此外,soap 标头不应在soap 响应中使用,因为:
是的,我知道一些 WS-* 标准在响应中描述了 soap 标头...
所以,
对严重到没有响应对象的错误使用肥皂故障。 将状态标记添加到警告和信息消息的响应中。
【讨论】: