私はこのスキームを持っています:
IIS
- ホスト: OperatorService.svc ( ClientServiceに接続)
- Global.asax (開始時): ServiceHost 経由でClientServiceをホストします。
WPF クライアント
- ClientServiceに接続します
OperatorService
に移動すると、サービスがアクティブになり、Web アプリケーションが開始され、ClientServiceが で正常にホストされhttp://localhost:8020/ClientService
ます。ここまでは順調ですね。
ブラウザーで前述の URLのClientServiceにアクセスできるようになりました。 Add Service Referenceを使用して追加できます。それは単にそこにあります-実行中です。
しかし、生成されたクライアントを介して接続しようとすると (問題ないように見えます)、突然機能しなくなります。投げ:
There was no endpoint listening at http://localhost:8020/ClientService that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
さらに、OperatorServiceはこのClientService自体に接続します (通知を提供するのは WsDualHttpBinding です)。このサービスに正しくサブスクライブし (メソッドを呼び出します)、動作します (私の WPF クライアントと同じ URL)。
WPF クライアントから接続できないのはなぜですか?
WPF クライアント構成 (関連するセクションのみ):
<client>
<endpoint address="http://localhost:8020/ClientService" binding="wsDualHttpBinding"
bindingConfiguration="DefaultBindingClientService" contract="Server.IClientService"
name="DefaultBindingClientService">
<identity>
<servicePrincipalName value="host/OHS-UPC" />
</identity>
</endpoint>
</client>
<bindings>
<wsDualHttpBinding>
<binding name="DefaultBindingClientService" />
</wsDualHttpBinding>
</bindings>
IIS がホストする web.config ( ClientService用)
<service name="TelPro.OHS.Server.Services.ClientService" behaviorConfiguration="UnsecuredBehavior">
<endpoint address="" binding="wsDualHttpBinding" bindingConfiguration="DefaultBindingClientService" contract="TelPro.OHS.Server.Services.IClientService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8020/ClientService"/>
</baseAddresses>
</host>
</service>
<wsDualHttpBinding>
<binding name="DefaultBindingClientService"/>
</wsDualHttpBinding>
<behavior name="UnsecuredBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
IIS がホストする web.config (OperatorService -> ClientService 用)
<client>
<endpoint address="http://localhost:8020/ClientService" binding="wsDualHttpBinding"
bindingConfiguration="DefaultBindingClientService" contract="ClientNotificationServer.IClientService"
name="DefaultBindingClientService" />
</client>
<wsDualHttpBinding>
<binding name="DefaultBindingClientService" />
</wsDualHttpBinding>