3

問題が発生している Windows 2003 サーバーに展開された WCF サービスがあります。構成は使用wsHttpBindingしており、IP アドレスを指定しています。サービスは、Windows サービスによってホストされています。

サービスを開始すると、ほとんどの場合、間違った IP アドレスが取得されます。数回、正しいアドレスにバインドされただけで、そのバインドがドロップされ、しばらく処理した後、NIC にバインドされた別のアドレス (2 つあります) に移動しました。

現在、ポート 80 を使用しています (IIS を 経由で 1 つのアドレスのみにバインドするように構成しましたhttpcfg) が、別のポートを使用して試してみましたが、結果は同じでした。

Windows サービスが WCF サービスのホストを開始すると、プロパティはそれが正しいアドレスにバインドされていることを示します。ただし、tcpview は、実際には正しくないアドレスでリッスンしていることを示しています。

以下は、baseAddress を設定する構成の一部です。バインドされるものは、.9 ではなく .4 になります。

<services>
    <service name="Service.MyService"
             behaviorConfiguration="serviceBehavior">
        <host>
            <baseAddresses>
                <add baseAddress="http://xx.xx.xx.9:80/" />
            </baseAddresses>
        </host>
        <endpoint address="MyService"
                  binding="wsHttpBinding"
                  bindingConfiguration="WSHttpBinding_IMyService"
                  contract="Service.IMyService" />
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
    </service>
</services>
  • 設定する必要がある他の構成はありますか?
  • これが間違ったアドレスにバインドされている場所を追跡するのに役立つツールはありますか?
4

6 に答える 6

1

同じ問題があり、この機能は問題の解決に役立ちました:

http://msdn.microsoft.com/en-us/library/system.servicemodel.hostnamecomparisonmode.aspx

この助けを願っています。

于 2009-04-29T14:15:24.410 に答える
1

問題は ISS 関連のようです。http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ddf72ae0-aa1e-48c9-88d1-10bae1e87e4f.mspx?mfr=trueから取得したエラーに関する説明を次に示します。

このエラーは、HTTP.sys が IP 包含リストを解析し、リスト内のすべてのエントリが無効であることを検出すると、イベント ログに記録されます。これが発生した場合、表 11.15 の説明にあるように、HTTP.sys はすべての IP アドレスをリッスンします。

同様の問題について話している次のスレッドを確認することもでき ます http://www.webhostingtalk.com/showthread.php?t=534174

お役に立てれば。

于 2008-10-01T10:44:08.017 に答える
1

あなたのWCF構成は私には問題ないようです。これは、NIC カードのバインド順序に問題がある可能性があります。正しいアドレスを持つ NIC が最初であることを確認します。NIC バインディングの順序を設定および表示する方法について説明している記事を次に示します。

http://theregime.wordpress.com/2008/03/04/how-to-setview-the-nic-bind-order-in-windows/

于 2008-09-30T19:47:36.847 に答える
0

詳細:NICからxx.xx.xx.4 IPアドレスを完全に削除し、IISをオフにしました。これで、サービスを開始しようとすると失敗し、システムイベントログでこれを見つけます。

Description:
Unable to bind to the underlying transport for xx.xx.xx.4:80. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.  The data field contains the error number.

私の構成ファイルにはまだxx.xx.xx.9baseAddress設定があります。

于 2008-09-30T21:03:15.853 に答える
0

情報をもう一つ。WsHttp の代わりに NetTcp を使用するようにバインドを変更すると、ポート 80 の正しいアドレスにバインドされます。WsHttp に戻すと、間違った IP アドレスに戻ります。

于 2008-09-30T23:26:32.810 に答える
0

BaseAddress は無視されます。IIS の下にホスト ヘッダーを設定する必要があります。

于 2010-10-05T10:42:11.833 に答える