6

2つのコントローラーを公開するパブリックセルフホストASP.NETWebAPIサービスがあります。1つはHTTPS経由でのみアクセスできるようにしたいのですが、もう1つはアクセスできません。これは単一のサービス内で実行できますか?もしそうなら、あなたはいくつかのヒントを提供できますか?2つのベースアドレスを登録する必要があるようですが、1つのサービスでそれがどのように可能かわかりません。

4

2 に答える 2

7

2つのHttpServerインスタンスを作成する必要があります。1つはhttp用、もう1つはhttps用です。HttpListenerが同じリスナーの両方の登録を処理できることがわかっているため、この制限が存在する理由を調べようとしています。

とにかく、2つのHttpServerインスタンスを作成しても実際には機能しない場合は、KatanaプロジェクトとMicrosoft.Owin.HttpListenerを確認する必要があります。これは複数のアドレスをサポートしますが、残念ながらデフォルトのKatanaスタートアップコードはサポートしていません!しかし、私はそれを可能にするために起動時にHttpListenerをカスタマイズする方法があります。

于 2013-01-23T16:18:45.797 に答える
0

(ServiceStack.Host.HttpListenerの)HttpListenerBaseは、起動時にnullでない場合、そのリスナーをオーバーライドしないため、HttpListenerBaseから継承するホストクラスで次のことを実行できます。

public override ServiceStackHost Start(string urlBaseNoPrefix)
{
    // Here urlBaseNoPrefix is something like "web.acme.com/app/" 
    Listener = new System.Net.HttpListener();
    Listener.Prefixes.Add("http://" + urlBaseNoPrefix);
    base.Start("https://" + urlBaseNoPrefix);
    return this;
}
于 2015-03-22T13:49:03.497 に答える