7

同じマシンで 2 つの Windows サービスを実行しています。どちらのサービスも使用します

プライベート HttpListener リスナー。

各サービスの baseURL を「http://IPAddress:8080/」および「http://IPAddress:8081/」としてそれぞれ指定します。それから私は必要なことをして電話します

リスナー.Start();

最初のサービスは 8080 ポートで正常に開始されます。しかし、2番目のサービスを開始すると、リスナーオブジェクトに対して「プロセスは別のプロセスによって使用されているため、ファイルにアクセスできません」というHTTPListenerExceptionが発生します。

誰でも教えてください:1)同じIISで2つの異なるポートで2つのHTTPリスナーを開始できるかどうか。2) はいの場合、どうすればこれを実現できますか? 3) これを行う他の方法はありますか?

参考までに: C#.NET 2.0 と IIS 6.0 サーバーを使用しています。

ありがとうございます。それでは、お元気で、

ハリ

4

3 に答える 3

6

HttpListenerはIISから独立して機能しませんか?IISサービスを停止して、何が起こるかを確認できますか?

または、ポート8081が別のプログラムまたはプロセスによって使用されている可能性があります。ポートを別の番号に設定してみることをお勧めします。コマンドラインを開いて「netstat」コマンドを実行し、サービスを開始する前にポートが使用されているかどうかを確認できます。

代替テキスト
(出典:googlepages.com

于 2008-10-18T07:55:45.337 に答える
2

実際、HTTPListener は IIS の一部ではありません。それはただのC#コードです。

このようにしましたか?

String[] prefixes = { "http://localhost:8280/", "http://localhost:8281/"};

HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8280/");
listener.Start();

1) 同じ IIS の 2 つの異なるポートで 2 つの HTTP リスナーを開始できる場合。

はい、そうです。しかし、IIS のリスナーはコードではなく、IIS 管理ツールを介して作成されるため、これはおそらくあなたがしようとしていることではありません。IIS は、試みている C# コードとは別のものです。

2) はいの場合、どうすればこれを実現できますか?

  • 他のポート番号 (58080 や 58081 など) を試し、「IPAddress」を「localhost」に置き換えてみてください。ポート番号が他の Web サーバーで使用されている可能性があります。

3) これを行う他の方法はありますか?

Web ページを提供しようとしている場合、独自の HTTP サーバーを作成する代わりに Web アプリケーションを作成したくないでしょう。

何かカスタムを行っている場合は、Web、ソケット、Web サービスなどの新しいフレームワークであり、MS が今後使用するものであるため、WCF (Windows Communication Foundation) を検討することをお勧めします。

于 2008-10-18T08:28:48.233 に答える
1

通常、ポート番号を使用するときは、このページをざっと見て、使用しようとしている一時番号がまだ使用されていないことを確認することをお勧めします。

于 2009-06-15T23:18:32.813 に答える