处理在处理 SOAP 标头时发生的错误

本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.

当 Web 服务检测到与处理 SOAP 标头有关的错误时,应该会引发 SoapHeaderException。利用此异常类,Web 服务可以正确地设置响应的格式。下面是一个调用示例:

throw new SoapHeaderException("invalid user",SoapException.ClientFaultCode); 
Throw New SoapHeaderException("invalid user", SoapException.ClientFaultCode)

如果客户端是使用 .NET Framework 创建的,它将收到 SoapHeaderException,此异常的内容(包括 InnerException 属性)放置在 Message 属性中。客户端捕获到的 SoapHeaderExceptionInnerException 属性将为 null。这是一种受 .NET Framework 支持的编程模型,因为该异常是在 SOAP <Fault> XML 元素中通过网络发送的,这正符合 SOAP 规范的规定。有关异常的更多详细信息,请参见在 XML Web services 中处理和引发异常

注意:.NET Framework 1.0 版包括 SoapHeaderAttribute.Required 属性,在将此属性设置为 true 时,Web 服务可以要求客户端发送特定的 SOAP 标头。通过将 soap:header 元素的 wsdl:required 特性设置为“true”,ASP.NET 可以指示需要在生成的 WSDL 文档中提供 SOAP 标头。对于根据 WSDL 文档生成的 Web 服务,如果其 .NET Framework 客户端未发送所要求的 SOAP 标头且其他客户端收到 SOAP 错误,这些客户端将收到 SoapHeaderException。为了与其他 SOAP 实现进行交互操作,此功能已在后续版本中删除。

在 1.1 版本中,Required 属性已过时,而 Web 服务描述语言工具 (Wsdl.exe) 也忽略了 WSDL 文档中 soap:header 元素的 wsdl:required 特性。由于不能再要求提供 SOAP 标头,因此 Web 服务应确保表示 SOAP 标头的字段或属性不是 null,然后再进行访问。

另请参见

参考

SoapHeaderException
SoapHeader
SoapHeaderAttribute
SoapUnknownHeader

概念

在 XML Web services 中处理和引发异常
生成 XML Web services 客户端

其他资源

使用 ASP.NET 的 XML Web services