如何在C#中访问SOAP HEADER

时间:2012-12-04 08:34:10

标签: c# soap asmx

如何将SOAP标头访问到类中。 场景:SOAP请求从客户端发送到Web服务。

[SoapHeader("transactionInfo", Direction = SoapHeaderDirection.In)]
public byte[] method1(DocumentInfo templateInfo,System.Xml.XmlDocument xml,string Name)
{"code to get the tags in soap header"}

2 个答案:

答案 0 :(得分:1)

如果您的代码运行正常,您会发现在transactionInfo课程中定义了一个名为WebService的字段。该字段将以反序列化的形式包含SOAP Header。

我从未这样做,但我怀疑如果transactionInfo字段的类型为XmlElement,那么您将能够以XML格式访问它。否则,您将能够以C#对象的形式访问它。

答案 1 :(得分:0)

1 - 定义您的自定义SoapHeader

  public class transactionInfo: System.Web.Services.Protocols.SoapHeader
  {
    public string  Info;
  }

2 - 在Web服务中定义标题

[WebService(Namespace = "http://..")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 public class MyWebService : System.Web.Services.WebService
{
    public transactionInfo Header  { get; set; }
    ...

3 - 在您的Web服务中定义一个使用此SoapHeader的方法

  [SoapHeader("transactionInfo", Direction = SoapHeaderDirection.InOut)]
    public void MyMethod()
    {
    }

[这是你问题的答案]
4 - 使用属性

从metod MyMethod访问标头的值
  if (Header.Info == "none")...