2011-08-09 13 views
0

背景 - 私はnetTcpBindingを実装するWCFサービスを自己ホストしたいので、Windows Server 2003/IIS6と互換性がなければなりません。私が見しようとしていますApplication_Startの自己ホスティングnetTcpBindingサービス

場合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で動作させることができますか?それは、コンソールapp/windowsサービス経由で自己ホストする必要がありますか、上記のようにglobal.asax内で自分自身をホストすることはできますか?

ありがとうございました。

+0

なぜIIS6内で自己ホストするのですか?何か理由は?そのようにインスタンスを管理するのは難しいでしょう。私はそれが最初にコンソールアプリで動作するかどうかを確認します。 – maxbeaudoin

+0

私はこれを既存のWebアプリケーションと統合しています。 –

+1

コンソールでサービスを自己ホストしてみましたか? WcfTestClient.exeを使用してサービスをテストします。あなたがそれを把握できない場合はトレースを有効にしてください。それらは良いWCFデバッグのヒントです。 – maxbeaudoin

答えて

2

何も簡単です。 Use windows service。 IISでのアプリケーションは、IISが望むようにアンロードされるため、サービスが実行されているかどうかわからないため、他の問題もある可能性があります。

Windows 2003 + Net.Tcp = Windowsサービス。それ以外は間違っています。

+0

IISを使用するよりもはるかに簡単です。 –

関連する問題