如何:更改 SOAP 标头的接收方

代码示例

默认情况下,在 SoapHeader 属性应用于 Web 服务方法时,SOAP 标头由 Web 服务客户端发送至 Web 服务方法。 但是,SOAP 标头也可以由 Web 服务方法发送回 Web 服务客户端。 也可以通过上述两种方式来发送。 设置应用于 Web 服务方法的 SoapHeader 属性 (Attribute) 的 Direction 属性 (Property) 可以控制 SOAP 标头的接收方。 Direction 属性属于类型 SoapHeaderDirection,它具有四个值:InOutInOutFault。 这些值分别指接收方(是否是 Web 服务服务器)、客户端、Web 服务服务器和客户端,以及在 Web 服务引发异常时是否将 SOAP 标头发送至客户端。

注意:.NET Framework SDK 1.0 版不支持 Fault 值。

更改 SOAP 标头的接收方

  1. 定义 SOAP 标头。

    public class MyHeader : SoapHeader 
    {
        public string Username;
        public string Password;
    }
    
    Public Class MyHeader : Inherits SoapHeader 
        Public Username As String
        Public Password As String
    End Class
    
  2. 向实现 Web 服务的类中添加一个成员变量。

    [WebService(Namespace="https://www.contoso.com")]
    public class MyWebService : WebService
    {
        public MyHeader myOutHeader;
    
    <WebService(Namespace:="https://www.contoso.com")> _
    Public Class MyWebService : Inherits WebService
        Public myOutHeader As MyHeader
    
  3. SoapHeader 属性应用于处理 SOAP 标头的每个 Web 服务方法。 使用 SoapHeaderDirection 枚举将 Direction 属性设置为每个目标接收方。 下面的示例通过将 Direction 设置为 SoapHeaderDirection.Out 来将 Web 服务客户端设置为接收方。

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. 根据接收方处理或设置 SOAP 标头。 下面的代码示例设置 SOAP 标头的值,因为接收方是 Web 服务客户端。

          // Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name;
    
          ' Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name
    
    

示例

下面的代码示例定义一个从 Web 服务方法发送到客户端的 MyHeader SOAP 标头。

<%@ WebService Language="C#" Class="MyWebService" %>

using System.Web.Services;
using System.Web.Services.Protocols;

// Define a SOAP header by deriving from the SoapHeader base class.
public class MyHeader : SoapHeader 
{
    public string Username;
    public string Password;
}

[WebService(Namespace="https://www.contoso.com")]
public class MyWebService : WebService
{
    public MyHeader myOutHeader;
 
    [WebMethod]
    [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    public void MyOutHeaderMethod() 
    {
      // Return the client's authenticated name.
      myOutHeader.Username = User.Identity.Name;          
    }
}
<%@ WebService Language="VB" Class="MyWebService" %>

Imports System.Web.Services
Imports System.Web.Services.Protocols

' Define a SOAP header by deriving from the SoapHeader base class.
Public Class MyHeader : Inherits SoapHeader 
    Public Username As String
    Public Password As String
End Class

<WebService(Namespace:="https://www.contoso.com")> _
Public Class MyWebService : Inherits WebService
    Public myOutHeader As MyHeader 
    
    <WebMethod, _
     SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)> _
    Public Sub MyOutHeaderMethod()
        ' Return the client's authenticated name.
        myOutHeader.Username = User.Identity.Name
    End Sub
End Class

请参见

参考

SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException

概念

生成 XML Web services 客户端

其他资源

使用 SOAP 标头
使用 ASP.NET 的 XML Web services

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。