同じポート上のセルフホスティング Web サーバー (HTTPListener) を備えたセルフホスティング WCF。可能?

StackOverflow https://stackoverflow.com/questions/1732115

  •  20-09-2019
  •  | 
  •  

質問

私はアプリに取り組んでおり、それに Web インターフェイスを提供する必要があります。WCF を使用して Web インターフェイスのサービスを提供し、アプリ (IIS なし) の両方を自己ホストすることを考えていました。さて、これら 2 つが同じポートを使用していない場合、ブラウザは XSS について文句を言います...

これは可能でしょうか?これは良いアイデアですか?

編集いくつかの調査の後、私はそれを機能させることができました。

Web サービスのセルフホスト コードは次のとおりです。

var serviceHost = new ServiceHost(typeof(CalculatorService));
serviceHost.AddServiceEndpoint(typeof (ICalculator), new WSHttpBinding(), "http://localhost:8000/webservice");
serviceHost.Open();

Console.WriteLine("CalcService is running.");
Console.WriteLine("Press Enter to terminate the service.");
Console.ReadLine();
serviceHost.Close();

Web ホストのコードは次のとおりです。

var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8000/webconsole/");
listener.Start();
Console.WriteLine("listening");
while(true)
{
    HttpListenerContext context = listener.GetContext();
    /* ... */
}

Webサービスが機能するには、次のことを行う必要がありました これ

役に立ちましたか?

解決

はい、うまくいきます。HTTP.SYS は、WCF が使用する HTTP 要素を抽象化し、すべてが異なるパス プレフィックスを使用している限り、任意の数のプロセスが同じポートを共有できるようにします。私も全く同じ理由でいつもこれをやっています。

ただし、これは IIS 5.1 の XP や VS Web サーバーでは機能しません。念のため試してみてください。これらは HTTP.SYS ベースではないため、ポートを排他的に取得することが期待されます。ただし、それ以外の場合 (2 つの WCF ホストを備えた XP を含む)、問題ありません。

他のヒント

素敵ですね、これは観ないといけませんね。他に何もうまくいかない場合は、2 つの別個のポートとして保持し、リバース プロキシを使用して WCF エンドポイントを整理することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top