2013-07-15 61 views
0

我需要從我的asp.net mvc控制器拋出一個異常返回給客戶端。拋出一個異常並返回一個狀態碼和一條消息

我可以這樣做:

throw new HttpResponseException(HttpStatusCode.NotAcceptable);返回一個狀態代碼。

或者我可以這樣做:

throw new HttpRequestException("You must fill the name!");返回的消息。

我的問題:是否可以結合兩種解決方案來提供狀態碼和消息?

Somethink像:

throw new HttpRequestException(HttpStatusCode.NotAcceptable, "Fill the name!");

感謝。


UPDATE

請注意,這是一個asp.net MVC的網站,但使用的微風框架。我的驗證失敗時需要拋出異常(所以在保存我的更改服務器端之前)。

public class TPBContextProvider : EFContextProvider<BreezeContext> 
{ 

    protected override bool BeforeSaveEntity(EntityInfo entityInfo) 
    { 
     ... 
     throw new HttpResponseException(HttpStatusCode.Conflict); 
+0

,我不認爲你應該DAL拋出HTTP錯誤。考慮使用你自己的異常類,比如'ContextException',你可以給你一個特定的錯誤代碼,你可以在你的動作方法中找到它,然後你可以將代碼翻譯成HTTP狀態代碼和消息。 – CodeCaster

回答

3

你試過返回一個HttpStatusCodeResult,而不是扔了:

public ActionResult Index() 
{ 
    return new HttpStatusCodeResult(HttpStatusCode.NotAcceptable, "Fill the name!") 
} 
+0

更確切地說,這實際上是一個asp.net mvc網站,但使用breeze框架。我需要拋出一個錯誤,但不是來自ActionResult,我更新了我的問題。謝謝。 – Bronzato

+0

@bronzato:http://stackoverflow.com/a/17653933/2015869 –

1

我認爲,這將工作

var responseMsg = new HttpResponseMessage(HttpStatusCode.Conflict); 
    responseMsg.Content = new StringContent("Custom error message"); 
    throw new HttpResponseException(responseMsg); 
相關問題