私は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が出ている場合も同じことが起こります。誰かが私がこれを理解するのを手伝ってくれますか?私は何が欠けていますか?