私は多くのWCFサービスを持っており、別のサービスから1つのサービスを呼び出す必要があります。私はこの目的のためにnetNamedPipeBinding
を使うことに決めました。net.pipe例外でリッスンしているエンドポイントがありません
私の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>
<endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc"
binding="netNamedPipeBinding" contract="ServiceContracts.IAuthorizationService" name="AuthorizationServiceNamedPipe" />
</client>
私はOperationContract
S(GetDetails)のいずれかを呼び出すためにしようとしていますこのような:
using (ChannelFactory<IAuthorizationService> authorizationChannel = new ChannelFactory<IAuthorizationService>("AuthorizationServiceNamedPipe"))
{
IAuthorizationService authorizationService = authorizationChannel.CreateChannel();
var response = authorizationService.GetDetails(new GetDetailsRequestMessage());
}
私はこのコードを実行すると、私はOperationContractのGetDetailsを呼び出す行で例外を取得:
メッセージを受け入れることができるnet.pipe://localhost/TestSite/AuthorizationService.svcにエンドポイントがありませんでした。これは、しばしば不正なアドレスまたはSOAPアクションによって引き起こされます。詳細については、InnerException(存在する場合)を参照してください。
私は正確な問題を見つけることができません。 InnerExceptionもありません。 私はWindows7マシンを使用しており、IISバージョンはIIS7.5です。 Winformアプリケーションからこのサービスを問題なく呼び出すことができます。 net.pipeバインディングはIISのWebサイトバインディングに追加されます。
net.pipeトランスポートを使用してサービスが正しく動作していることを確認するにはどうすればよいですか? HTTPの場合は、IEでブラウズして確認できます。
両方のサービスは同じマシンで実行されていますか? – Franchesca
@Franchesca:はい、同じマシン上のIIS 7.5上で動作しています。 – Learner
私が見つけることができるのは、サーバー側にアドレスまたはホストベースアドレスを提供していないということです。それは間違いですか? – Jack