2016-08-05 15 views
1

SSLを使用してHTTPS(443)をリッスンし、HTTP(80)を使用してリクエストをリダイレクトするIIS。webapiアプリケーションをホストし、swashbuckleを使用してAPIを記述するElastic Load Balancerメソッド。スワッガーページがhttpsからhttpにリダイレクトされる

APIのホームページ(https://example.com)には、Swaggerのドキュメントへのリンクがあります。このドキュメントは、リンク上に浮かぶとhttps://example.com/swagger/ui/index.htmlと読むことができます。

  • 私がリンクをクリックした場合には、ページが見つかりませんエラー

  • を表示しますが、私は、ブラウザのURL https://example.com/swagger/ui/index.htmlに直接入力した場合、それが闊歩ページをロードhttp://example.com/swagger/ui/index.htmlにブラウザ上で要求をリダイレクトし、しかし、メソッドを展開するときに「試す」をクリックすると、リクエストURLは「http」で再び開始されます。

この構成は、ステージ環境と本番環境のみに適用されます。下位環境ではロードバランサを使用せず、単にhttpを使用します。

httpにリダイレクトされるhttpsを停止する方法についてのアイデアはありますか?また、httpsを使用してリクエストURLを表示するにはどうすればいいですか?

はありがとう

編集:私はあなたのアプリケーション異なるにのビルド時にカスタムindex.htmlファイル

+0

別の環境に異なるスワッガーファイルを使用する際に発生する問題は何ですか?私は、Dev環境と比較して、ProductionではURLが異なっていると思いますか? – gvo

+0

URLは環境によって異なります。環境ごとに異なるファイルが含まれていないソリューションはありますか? – MaRoBet

+0

私は同様の問題があります。どんな更新? – martijn

答えて

0

私はおそらくそれがメインのファイルを持っているんだろうな方法、および生成を使用してい スキームとホストの環境変数に基づいてファイルをスワッガーします。

、方法あなたの環境accross一つだけ闊歩ファイルを管理する必要があり、(あなたはすでにそれを持っていない場合)あなたが唯一のいくつかの余分なエンバイロメントのプロパティ、ホストおよびスキームを管理する必要が

Iので、あなたの最初の質問(リダイレクト)で確実に答えることができません。

0

Swashbuckleの既知の問題です。引用符:

"デフォルトでは、サービスルートURLはドキュメントへのアクセスに使用された要求から推測されますが、正しく解決されない状況(プロキシと負荷分散環境など)があります。ルートURLを決定するために独自のコードを提供することにより、回避策これを。

私は環境

GlobalConfiguration.Configuration 
        .EnableSwagger(c => 
        { 
         ... 
         c.RootUrl(req => GetRootUrlFromAppConfig(req)); 
         ... 
         c.Schemes(GetEnvironmentScheme()); 
         ... 
        }) 
        .EnableSwaggerUi(c => 
        { 
         ... 
        }); 

に基づいてルートURLおよび/または使用するための仕組みを提供して何をしましたか
関連する問題