2016-04-16 31 views
1

我知道這很容易,但我不能讓這個工作。我有一個響應標題如下。獲得在asp.net頁面中的破折號響應值頭

X-Exposure-Server:EastUS2 

我隨地吐痰出來這樣

<span>@Response.Headers["X-Exposure-Server"]</span> 

然而,它是空白。爲什麼?

響應頭

HTTP/1.1 200 OK 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Server: Microsoft-IIS/8.5 
X-AspNetMvc-Version: 5.2 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
X-Exposure-Server: EastUS2 
Access-Control-Allow-Origin: * 
X-UA-Compatible: IE=Edge,chrome=1 
Date: Tue, 19 Apr 2016 04:39:53 GMT 
Content-Length: 11017 

回答

1

我得到的唯一辦法這工作是設置此在BeginRequest中,EndRequest在頁面呈現之後。

protected void Application_BeginRequest() 
     { 
      HttpContext.Current.Response.AddHeader("X-Exposure-Server", Config.Settings.ServerRegion); 
     } 
1

如果要添加自定義標題來響應,那麼它是available.Just檢查Response.Headers快速watch.Tried值的scenario.I加入我的響應頭Response.AddHeader(「myheader」,「myheadervalue」);並試圖像 - @ Response.Headers [「myheader」]那樣在視圖中使用它,它顯示了值。僅顯示由mvc添加的標頭。

+0

如何獲取IIS添加的值顯示???? –

+0

這是IIS默認添加的X-Exposure-Server響應標頭嗎?只有可以返回的標準響應標頭(默認),這不是其中之一.chk此鏈接-msdn.microsoft.com/en-us/ library/ms537417(v = vs.85).aspx; IIS可以返回以X-*開頭的4個響應頭,但是你得到的不是這些中的一個。那麼IIS如何返回你提到的頭文件。 –

+0

但我在Chrome Web工具網絡標籤中看到它? –

1

只有通過代碼設置密鑰才能訪問該密鑰。因此,請檢查此方法 創建一個繼承IHttpModule並實現它的類。

public class HTTPHeaderModule : IHttpModule 
{ 
    public void Dispose() 
    { 

    } 

    public void Init(HttpApplication context) 
    { 
     context.EndRequest += new EventHandler(context_EndRequest); 
    } 

    void context_EndRequest(object sender, EventArgs e) 
    { 
     HttpResponse response = HttpContext.Current.Response; 

     response.AddHeader("X-Exposure-Server","EastUS2e"); 
     //You can read this(EastUS2e) value from web.config 
    } 
} 

現在的web.config中的HttpModule節中增加一行:

<httpModules> 
    <add name="HTTPHeaderModule" , type="HTTPHeaderModule" /> 
</httpModules> 

MSDN參考:

http://msdn.microsoft.com/en-us/library/aa719858%28VS.71%29.aspx