2011-04-12 19 views
4

我有以下控制器方法指定StatusMessage。不能在HttpStatusCodeResult

public ActionResult Save(IEnumerable<Model> models) 
{ 
    try 
    { 
     SaveModels(models); 
    } 
    catch (ApplicationException ex) 
    { 
     return new HttpStatusCodeResult(500, "error"); 
    } 
    return new EmptyResult(); 
} 

這將始終返回「內部服務器錯誤」作爲HTTP狀態描述,無論我給構造函數的消息。

提琴手輸出:

HTTP/1.1 500 Internal Server Error 
Server: ASP.NET Development Server/10.0.0.0 
Date: Tue, 12 Apr 2011 12:44:09 GMT 
X-AspNet-Version: 4.0.30319 
X-AspNetMvc-Version: 3.0 
Cache-Control: private 
Content-Length: 0 
Connection: Close 

如果我改變的狀態碼501我得到未實施過線,同樣用200 OK。如果我選擇一個不存在的狀態碼,比如535,它只會返回狀態碼而沒有任何描述。根據documentation以及我從其他人使用此方法找到的示例,我無法看到自己做錯了什麼。

任何人都可以看到我在做什麼錯?

+1

我認爲這可能與卡西尼有關。嘗試在IIS中運行代碼。 – 2011-04-12 14:07:01

回答

2

我有同樣的問題,並根據@的Mikael的評論,我想我的部署應用到實際的IIS服務器,是的,你可以指定實際狀態說明,它會返回到客戶端。

爲什麼與卡西尼號不同,我不是很肯定。

+0

實在是在ASP.NET與此相關的一個問題:http://aspnet.codeplex.com/workitem/9767 – 2012-06-21 21:17:08

+0

@AlexYakunin感謝您的信息。這是否意味着它與服務器並不真正相關,但更可能是ASP.NET引擎?不幸的是,這個鏈接並沒有提供更多的信息。 – Alpha 2012-06-21 22:31:37

+0

實際上,我們已經找到了解決這個問題的一個解決方法:據我所知,我們直接通過MVC操作過濾器之一編寫HTTP 500響應。 – 2012-08-13 00:46:46