2016-03-12 175 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); 
     } 
    } 
}