質問

ロードバランサーを使用するいくつかのWebサーバーがあります。マシンはポート81でIIS6を実行しています。外部では、ポート80を使用してサイトにアクセスできます。外部名とマシンの名前は異なります。

取得しています

System.ServiceModel.EndpointNotFoundException: The message with To '<url>' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree.

web.configの関連部分は次のとおりです:

  <endpoint binding="ws2007HttpBinding" bindingConfiguration="MyServiceBinding"
    contract="MyService.IMyService" listenUriMode="Explicit" />

listenUriを追加しようとしましたが、問題は解決しませんでした。

アイデアはありますか

役に立ちましたか?

解決

[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]

この属性をサービスに設定すると、問題が解決します。

他のヒント

特定のロードバランサーとは何ですか? F5 BIG-IPを使用すると、かなり簡単に機能しますが、nlbの個々のマシンと同じポートと(相対)uriを使用していました(したがって、個々のマシンをファームと同じように扱うことができます)。明らかに各マシンの名前は異なりますが、このセットアップでは、ホストをスプーフィングすることで個々のサーバーをテストすることもできます。たとえば、HOSTSファイルを編集して[ファーム名]が[テストサーバーIP]を指すようにします。

私たちが抱えていた最大の痛みはSSLでした。 TransportWithMessageCredentialセキュリティを使用して、WCFはインバウンドHTTP接続を拒否します-そのため、nlbとサーバーノード間で再暗号化するためにnlbを設定する必要がありましたが、大したことではありません。

私たちが抱えていた他の唯一の問題は、IIS内でWCFをホストすることでした。これを修正するために、httpを完全に無視する(httpsのみでリッスンする)単純なカスタムファクトリを作成しました。

標準のポートでホストするのではなく、別のサイト(IP / host-header / etc)でホストすることで、より多くの喜びを得られるのではないかと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top