0

クラスに 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"}
4

2 に答える 2

1

コードが正常に機能している場合はtransactionInfo、クラスで定義されたという名前のフィールドがあることがわかりますWebService。そのフィールドには、デシリアライズされた形式の SOAP ヘッダーが含まれます。

私はこれを行ったことはありませんが、transactionInfoフィールドのタイプが である場合、 XmlElementXML としてアクセスできると思います。それ以外の場合は、C# オブジェクトとしてアクセスできます。

于 2012-12-04T08:49:51.967 に答える
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 - プロパティを使用してメソッド MyMethod からヘッダーの値にアクセスします

  if (Header.Info == "none")...
于 2012-12-04T09:20:36.143 に答える