2016-09-12 6 views
0

Web API 2サービスからIIS構成の応答ヘッダーにアクセスする方法はありますか。Webサービスから事前設定されたIIS応答ヘッダーにアクセスする

私のIIS構成には、あらかじめ設定されたレスポンスヘッダーEnvironment=DEVがあります。使用する環境設定を確認するためにチェックする必要があります。

現在の応答のヘッダーをHttpContext.Current.Response.Headersでチェックすると、Serverしか表示されません。

答えて

1

応答ヘッダーがパイプラインの非常に後の段階でIISの応答に追加され、コントロールが既にWEB APIから外れているため、応答ヘッダーに依存する必要はありません。

これを行う必要がある場合は、URL書き換え+サーバー変数を使用できます。 URL書き換えをインストールし、また、あなたは、IIS UIからこのルールを追加することができます

<rewrite> 
    <rules> 
     <rule name="GetEnvironmentInfo"> 
      <match url=".*" /> 
      <serverVariables> 
       <set name="Environment" value="Dev" /> 
      </serverVariables> 
      <action type="Rewrite" url="{R:0}" /> 
     </rule> 
    </rules> 
</rewrite> 

以下のようsystem.webServerの下であなたのweb.configファイル内のルールを追加します。今WEBAPIの構成に応じて、コード

string output = string.Empty; 
if (Request.Properties.ContainsKey("MS_HttpContext")) 
{ 
    output = ((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.ServerVariables["Environment"]; 
} 
else if (Request.Properties.ContainsKey("MS_OwinContext")) 
{ 
    var httpContextWrapper = ((OwinContext)Request.Properties["MS_OwinContext"]).Environment["System.Web.HttpContextBase"] as HttpContextWrapper; 
    output = httpContextWrapper.Request.ServerVariables["Environment"]; 
} 

の下に使用して、サーバー変数を取得することができます上記のXMLは、サーバーレベル

1.Install URL書き換えでIIS GUIから生成することができます。

2.Open IISマネージャ(Windowsのファイル名を指定して実行 - > inetmgrを)

3.Select Serverの左側のメニューで

中央ペイン4.InダブルURL書き換え]をクリックします。アクションは、右側のペインに

enter image description here

とセーブ

以下のようにルールに

5.Set値の追加]をクリックします。方法があるかもしれませんIISからのフェッチレスポンスヘッダについては、\ WINDOWS \ System32には\ inetsrvに\ Configを\ applicationHost.configを

 <globalRules> 
      <rule name="GetEnInfo"> 
       <match url=".*" /> 
       <action type="Rewrite" url="{R:0}" /> 
       <serverVariables> 
        <set name="Environment" value="dev" /> 
       </serverVariables> 
      </rule> 
     </globalRules> 

ファイル:

このIEのCサーバーレベルで今同じXMLを追加しますが回答の冒頭に記載された理由により私はそれをお勧めしません。

これが役に立ちます。

+0

サービス自体のXMLですか?しかし、サービスは変数を設定することはできません。IISから変数を読み取ることになっています。それ以外の場合は、変数全体を無効にします。 IISレスポンスヘッダーを読み取る方法はありませんか? –

+0

サーバーレベルで私の答えを更新しました –

+0

あなたが探している答えはまだありませんか? –

関連する問題