2011-01-09 45 views
33

我在ASP.NET 4.0和IIS7中編寫HTTP處理程序,我需要生成文件未找到的條件。設置Response.Status生成「HTTP狀態字符串無效」異常

我複製從馬修麥當勞新書下面的代碼,臨ASP.Net 4在C#2010(應變量是當前的HttpResponse的實例。)

response.Status = "File not found"; 
response.StatusCode = 404; 

但是,我發現了第一行生成運行時錯誤HTTP status string is not valid.

如果,而不是線以上,我使用以下命令:

response.Status = "404 Not found"; 

然後一切似乎WO很好。實際上,我甚至可以看到response.StatusCode被自動設置爲404。

我的問題是,我不希望這在生產服務器上失敗。所以如果我能理解「正確」的方式來實現這一點,我會感覺好多了。爲什麼第一種方法適用於馬修麥克唐納而不適合我?第二種方法總是可靠嗎?

任何人都可以提供任何提示嗎?

回答

56

這是因爲Status屬性是發送到客戶端的完整狀態行,而不僅僅是消息。

你可以寫:

response.Status = "404 File not found"; 

或者,較好的是:

response.StatusCode = 404; 
response.StatusDescription = "File not found"; 

需要注意的是,根據其文檔,HttpResponse.Status是贊成不贊成HttpResponse.StatusDescription

+0

那麼,這仍然讓我在黑暗中如何從書上得到的其他代碼有效。 – 2011-01-09 15:46:49