3

私はsoapheaderにWCFExtraを使用することにしている。私が追加しました

<extensions>
  <behaviorExtensions>
    <!-- Declare that we have an extension called WSDL Extras-->
    <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </behaviorExtensions>
</extensions> 

サービス構成ファイルにSoapHeaders属性とSoapHeader属性を追加しました...サンプルとまったく同じようにサーバー側で値を設定しました-

        [OperationContract]
    [SoapHeader("MyHeader", typeof(Header), Direction = SoapHeaderDirection.In)]
    string In();


        public string In()
    {
        Header soapHeader = SoapHeaderHelper<Header>.GetInputHeader("MyHeader");
        if (soapHeader != null)
        {
            return soapHeader.Value;
        }
        return null;
    }

クライアント側で私は持っています

        <metadata>
          <wsdlImporters>
            <extension type="WCFExtras.Soap.SoapHeaderImporter, WCFExtras" />
          </wsdlImporters>
        </metadata>

名前空間Client.MyService{パブリック部分クラスMyService{パブリックヘッダーMyHeader{get{return InnerChannel.GetHeader( "MyHeader"); } set {InnerChannel.SetHeader( "MyHeader"、value); }}}}}

            Console.WriteLine("Testing In()");
        serviceClient.MyHeader = new Header() {Value = "in"};
        string someValue = serviceClient.In();

        Console.WriteLine("The return is = " + someValue);

呼び出しでエラーは表示されませんが、サービス側では、クライアント側のsoapHeaderで渡した値を取得できません。SoapHeaderが出ている場合も同じことが起こります。誰かが私がこれを理解するのを手伝ってくれますか?私は何が欠けていますか?

4

0 に答える 0