2009-11-21 57 views
2

我正在處理ASP.Net MVC的過濾器屬性,它將在內容尚未修改時返回304響應。能夠讀取控制器中設置的Last-Modified標頭值以完成此操作將非常方便...似乎只有一個問題。我似乎無法找到一種方法執行像卡西尼[Visual Studio 2008中開發Web服務器]下面的代碼時,讀取頭...有沒有辦法從Response Headers中讀取而不會收到PlatformNotSupportedException?

Response.AddHeader("Last-Modified", lastModified); 
string getLastModified = Response.Headers.Get("Last-Modified"); 

我也試過如下:

Response.AddHeader("Last-Modified", lastModified); 
string getLastModified = Response.Headers["Last-Modified"]; 

兩者都返回一個PlatformNotSupportedException並指出它們需要「此操作需要IIS集成管道模式。」

下面是對環境的一些細節:

  • Framework版本:NET 3.5的 - SP1
  • IDE:Visual Studio 2008的
  • Web服務器:卡西尼[開發]和IIS6 [製作]

我可能缺少一個簡單的方法來得到這個提前工作...
謝謝,
Joe

+0

對不起,這可能不是您問題的完整答案。但是這裏的問題是Response.Headers屬性在IIS6上不受支持。您需要以集成模式運行IIS7。 http://msdn.microsoft.com/en-us/library/system.web.httpresponse.headers.aspx – 2009-11-21 03:44:43

回答

1

Response.Headers不受Cassini或IIS 6支持。對於其他幾個最近的功能(如Server Variables)也是如此。

解決方案:

  1. 在IIS配置的網站指向你的dev的文件,並相應設置起始URL爲您的項目是否與IIS 7的本地版本的開發。如果需要,您可以使用80以外的端口,用於多個項目。

  2. 將您的生產站點切換爲使用IIS 7(可能與Windows Server 2008一起使用)。還有一些其他很好的理由可以升級,例如性能提升。

如果升級是不可能的,我唯一能想到的方法就是編寫一個ISAPI篩選器,使標題更改(以C++編寫)。

+0

不幸的是,升級服務器目前不會成爲一種選擇。但謝謝你的迴應! – 2009-12-01 01:07:28

+1

在這種情況下,想到的唯一選擇是編寫ISAPI過濾器(使用C++)。 – RickNZ 2009-12-01 01:52:23

+0

這不是一個答案... – Nissim 2015-10-13 06:15:59

相關問題