2016-03-12 216 views
4

我想從我的API方法返回無效的ModelState,並嘗試使用,因爲它是在網絡API:ASP.NET核心和CreateErrorResponse

  return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Test"); 

但它說,這

嚴重性代碼描述項目文件行抑制狀態 錯誤CS1929'HttpRequest'不包含 'CreateErrorResponse'的定義和最佳擴展方法重載 'HttpRequestMessageExtensions.CreateErrorResponse(HttpRequestMessage, HttpStatusCode,字符串)」需要 類型的接收器‘HttpRequestMessage’

因此,在一些核心ASP.NET改變,我應該包括HttpRequestMessage作爲第一個參數。但是,如何創建它,爲什麼它有必要作出迴應呢?

編輯:

我發現,無效的模型可以通過下面的代碼返回:

return HttpBadRequest(ModelState); 

,但在任何情況下,要知道靈活的方法給我回自己的錯誤響應。

+1

您可以添加和刪除的ModelState錯誤 – tmg

+0

@tmg我可以,但我的問題,我想將其返回到客戶端,以便靈活的,我怎麼會在網頁API 2 –

回答

0

我發現mono還沒有實現這些; System.Web.Http/HttpRequestMessageExtensions將擴展方法添加到System.Net.Http。你可以自己做

namespace System.Web.Http 
{ 
    public static class ApiControllerExtensions 
    { 
     [System.Xml.Serialization.XmlRoot(ElementName = "Error", Namespace = "")] 
     public class ErrorResponse 
     { 
      public string StatusCode { get; set; } 
      public string Message { get; set; } 
     } 
     public static HttpResponseException CreateErrorResponseException(this ApiController controller, HttpStatusCode statusCode, string message) 
     { 
      ErrorResponse error = new ErrorResponse() 
      { 
       StatusCode = (int)statusCode + ": " + statusCode.ToString(), 
       Message = message 
      }; 
      HttpResponseMessage responseMessage = controller.Request.CreateResponse(statusCode, error, controller.Request.GetConfiguration()); 
      return new HttpResponseException(responseMessage); 
     } 
    } 
}