2009-08-28 70 views
1

我想讓我的ASP.NET MVC應用程序返回帶有代碼400的HTTP響應以及錯誤的描述。我的代碼是:asp.net如何更改錯誤響應?

response.StatusCode = 400; 
response.Write("Some error"); 
response.End(); 

當我在localhost上測試這段代碼時,我得到了預期的結果。但是在遠程服務器上,響應文本僅包含錯誤的文本描述,在這種情況下「錯誤請求」。

  1. 您能解釋一下這種行爲嗎?
  2. 這是什麼解決方案?

Web服務器 - IIS7,locahost意味着我從本地計算機訪問遠程 - 從遠程訪問。

+0

'普通民宅請求' 或 '錯誤的請求'? – rahul 2009-08-28 11:13:44

+0

@phoenix,謝謝,修復了 – 2009-08-28 11:17:51

+0

遠程服務器版本? – AnthonyWJones 2009-08-28 11:38:43

回答

0

當你說「localhost」是指在VS中調試時使用的Cassini開發Web服務器?

您要部署到的服務器是IIS6?默認情況下它會陷阱400併發送自己的響應。我不確定有什麼辦法可以阻止它這樣做(你可能會用MetaBase搞砸,但我不確定)。您可以在您發送此代碼時要執行的頁面的站點中指定一個URL。

這就是說,你爲什麼使用400,而不是簡單地拋出異常? 400被諸如SOAP之類的協議所濫用,它將不良形式的HTTP請求的含義擴展到應用程序中,但這是邊界線,因爲SOAP也是一個傳輸包絡。

然而,我有一個接受請求然後發回400響應的應用程序似乎很奇怪,您通常會發送500上的變體。

+0

對不起,我沒有指定Web服務器,本地和遠程我使用IIS7。 – 2009-08-28 11:41:50

1

答案很簡單:

response.TrySkipIisCustomErrors = true; 
+1

雖然這隻適用於IIS 7+。 – 2009-08-28 12:19:43

+0

是的,這是一個煩人的肛交。 – 2010-07-02 01:11:40