如何:更改 SOAP 标头的接收方
代码示例
默认情况下,在 SoapHeader 属性应用于 Web 服务方法时,SOAP 标头由 Web 服务客户端发送至 Web 服务方法。 但是,SOAP 标头也可以由 Web 服务方法发送回 Web 服务客户端。 也可以通过上述两种方式来发送。 设置应用于 Web 服务方法的 SoapHeader 属性 (Attribute) 的 Direction 属性 (Property) 可以控制 SOAP 标头的接收方。 Direction 属性属于类型 SoapHeaderDirection,它具有四个值:In、Out、InOut 和 Fault。 这些值分别指接收方(是否是 Web 服务服务器)、客户端、Web 服务服务器和客户端,以及在 Web 服务引发异常时是否将 SOAP 标头发送至客户端。
注意:.NET Framework SDK 1.0 版不支持 Fault 值。
更改 SOAP 标头的接收方
定义 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
向实现 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
将 SoapHeader 属性应用于处理 SOAP 标头的每个 Web 服务方法。 使用 SoapHeaderDirection 枚举将 Direction 属性设置为每个目标接收方。 下面的示例通过将 Direction 设置为 SoapHeaderDirection.Out 来将 Web 服务客户端设置为接收方。
[WebMethod] [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
<WebMethod, _ SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
根据接收方处理或设置 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
概念
其他资源
使用 SOAP 标头
使用 ASP.NET 的 XML Web services
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。