我想从我的API方法返回无效的ModelState并尝试使用它在Web Api中的用法:
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Test");
但它说,
严重级代码描述项目文件行抑制状态 错误CS1929' HttpRequest'不包含的定义 ' CreateErrorResponse'和最好的扩展方法重载 ' HttpRequestMessageExtensions.CreateErrorResponse(HttpRequestMessage, HttpStatusCode,string)'需要一个类型的接收器 ' HttpRequestMessage'
所以,ASP.NET Core中的内容发生了变化,我应该将HttpRequestMessage作为第一个参数包含在内。但是如何创建它以及为什么它在回应中是必要的呢?
修改
我发现,以下代码可以返回无效模型:
return HttpBadRequest(ModelState);
但无论如何,想要知道灵活的方法来返回我自己的错误响应。
答案 0 :(得分: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);
}
}
}