多くのWCFサービスがあり、あるサービスを別のサービスから呼び出す必要があります。私はnetNamedPipeBinding
この目的のために使用することにしました。
私のweb.configファイルは次のようになります。(私はここに無関係なものをコピーしていません。)
<services>
<service name="Services.AuthorizationService" >
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" >
<endpoint
name="AuthorizationService"
address=""
binding="basicHttpBinding" contract="ServiceContracts.IAuthorizationService" />
<endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc"
binding="netNamedPipeBinding" contract="ServiceContracts.IAuthorizationService"
name="AuthorizationNamedPipeEndpoint"/>
</service>
</Services>
web.configファイルのclientセクションは次のようになります。
<client>
<endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc"
binding="netNamedPipeBinding" contract="ServiceContracts.IAuthorizationService" name="AuthorizationServiceNamedPipe" />
</client>
私はOperationContract
次のようにs(GetDetails)の1つを呼び出そうとしています:
using (ChannelFactory<IAuthorizationService> authorizationChannel = new ChannelFactory<IAuthorizationService>("AuthorizationServiceNamedPipe"))
{
IAuthorizationService authorizationService = authorizationChannel.CreateChannel();
var response = authorizationService.GetDetails(new GetDetailsRequestMessage());
}
このコードを実行すると、OperationContractGetDetailsを呼び出した行で例外が発生します。
メッセージを受け入れることができるnet.pipe://localhost/TestSite/AuthorizationService.svcでリッスンしているエンドポイントはありませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。
正確な問題を見つけることができません。InnerExceptionもありません。私はWindows7マシンを使用しており、IISのバージョンはIIS7.5です。Winformアプリケーションから問題なくこのサービスを呼び出すことができることに注意してください。net.pipeバインディングは、IISのWebサイトバインディングに追加されます。
net.pipeトランスポートを使用してサービスが正しく機能していることを確認するにはどうすればよいですか?HTTPの場合、IEで参照して確認できます。