WCFディスカバリーを使用してサービスを作成しました。(VS2010デバッグを使用して)特定のポートに展開するとすべて正常に機能しますが、IISに展開しようとすると、サービスは検出されますが、どのメソッドも実行できません。
これはコードです:
DiscoveryClient discoverclient = new DiscoveryClient(new UdpDiscoveryEndpoint());
FindResponse response = discoverclient.Find(new FindCriteria(typeof(IService)));
EndpointAddress address = response.Endpoints[0].Address;
ServiceClient client = new ServiceClient(new BasicHttpBinding(), address);
Console.WriteLine(client.getMsg()); //some test function
Console.ReadKey();
メソッドを実行client.getMsg()
しようとすると、次のエラーが発生します。
EndpointNotFoundException:メッセージを受け入れることができるhttp://computerName.domain/services/Service.svc
で リッスンしているエンドポイントがありませんでし た。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。
しかし、私はアドレスを取得しました。つまり、それが見つかりました。そして、(iisではなく)debug deployerを使用するhttp://localhost:port/services/Service.svc
と、それが見つかり、完全に正常に実行されます。どうすれば問題なくIISにデプロイできますか?
OS:win764ビット
設定ファイル:
<services>
<service behaviorConfiguration="RemoteDeploy.Service1Behavior"
name="RemoteDeploy.Service">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
contract="RemoteDeploy.IService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint name="udpDiscoveryEpt" kind="udpDiscoveryEndpoint" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="RemoteDeploy.Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceDiscovery>
</serviceDiscovery>
</behavior>
</serviceBehaviors>
</behaviors>