ASMX からサービスを書き直しています -> ServiceStack を使用して RESTful であるため、IIS と従来のサービスをポート 80 で実行し続ける必要があります。ポート 80 でリッスンしている IIS。
私のアプリケーションは何百人もの顧客に配布する必要があるため、可能であれば、更新プログラムの展開をより簡単にするために、IIS 依存関係から離れたいと考えています。また、ルーターでポート 80 用に特別な転送をセットアップしているお客様も多くいます。そのため、SS サービスを別のポートでリッスンすると、展開に多大な苦労が生じることになります。言うまでもなく、ほとんどのファイアウォールはポート 80 のトラフィックに対して寛大です。
関連する問題が 2 つあります。
1. ポート 80 で SS を起動できるとhandler not found
、別のポートで動作するルートに対して " " が表示されます。
2.デバッグ中(開始/デバッグ/停止/再起動)、最終的にリスナーの登録が「固執」しているように見え、最終的に次のようになります。
System.Net.HttpListenerException (0x80004005): Failed to listen on prefix 'http://*:80/' because it conflicts with an existing registration on the machine.
at System.Net.HttpListener.AddAllPrefixes()
at System.Net.HttpListener.Start()
at ServiceStack.WebHost.Endpoints.Support.HttpListenerBase.Start(String urlBase) in C:\src\ServiceStack\src\ServiceStack\WebHost.Endpoints\Support\HttpListenerBase.cs:line 122
at FieldCommService.FieldCommService.ConfigureServices() in e:\Development\Source\Hg\fieldcomm\src\Services\FieldCommService\FieldCommService.cs:line 305
at FieldCommService.FieldCommService.Startup() in e:\Development\Source\Hg\fieldcomm\src\Services\FieldCommService\FieldCommService.cs:line 84
解決策として IIS でサービスをホストすることを除外するつもりはありません。IIS に伴う構成と展開の苦痛を引き受けない/引き受け続けることを好みます。
2 つの質問があり
ます。
2. AppHostHttpListenerBase のインテリセンスでは、このクラスは IIS の横にあるポート 80 でリッスンできるように設計されていますが、「管理者ユーザー権限」が必要であることに注意してください。これは、サービスとして実行されている Windows で何を意味しますか? 管理者グループに属する ID ですか? それとも単に「ローカルシステム」ですか?