0

背景は次のとおりです。netTcpBindingを実装するWCFサービスをセルフホストしたいのですが、Windows Server 2003/IIS6と互換性がある必要があります。

global.asaxのApplication_Startイベント中にセルフホストできるかどうかを確認しようとしています。

protected void Application_Start(object sender, EventArgs e)
{
        NetTcpBinding binding = new NetTcpBinding();

        binding.PortSharingEnabled = true;

        ServiceHost host = new ServiceHost(typeof(Svc), new Uri("net.tcp://xxx.x.xxx.xx:1100"));

        string address = "Tcp";

        host.AddServiceEndpoint(typeof(IService), binding, address);

        host.Open(); 
}

しかし、サービスを呼び出そうとすると、クライアントでこれを受け取ります。

Could not connect to net.tcp://xxx.x.xxx.xx:1100/Tcp. The connection attempt lasted for a time span of 00:00:01.0630608. TCP error code 10061: No connection could be made because the target machine actively refused it xxx.x.xxx.xx:1100.

私の最初の本能は、これがポートの問題であるかどうかを確認することだったので、クライアントで関連するポートを開きましたが、それは役に立ちませんでした。サーバーのポートは重要でしょうか?それ以外の方法でポートにアクセスできます。

または、IIS6を使用しているためにこれが発生している場合、IIS6でこれを機能させるために、セルフホスティングを使用したどのような回避策を使用できますか?コンソールアプリ/Windowsサービスを介してセルフホストする必要がありますか、それとも上記のようにglobal.asax内でセルフホストできますか?

ありがとう。

4

1 に答える 1

2

これ以上簡単なことはありません。Windowsサービスを使用します。IISのアプリケーションは、IISが必要なときにアンロードされるため、サービスが実行されているかどうかがわからず、他の問題も発生する可能性があります。

Windows 2003 + Net.Tcp=Windowsサービス。他の何かが間違っています。

于 2011-08-09T19:27:22.410 に答える