C# ASP.NET核心和CreateErrorResponse

C# ASP.NET核心和CreateErrorResponse,c#,asp.net,asp.net-web-api,asp.net-core,C#,Asp.net,Asp.net Web Api,Asp.net Core,我想从API方法返回无效的ModelState,并尝试使用Web API中的方法: return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Test"); 但它说 严重性代码说明项目文件行抑制状态 错误CS1929“HttpRequest”不包含的定义 “CreateErrorResponse”和最佳扩展方法重载 'HttpRequestMessageExtensions.CreateErrorRes

我想从API方法返回无效的ModelState,并尝试使用Web API中的方法:

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

严重性代码说明项目文件行抑制状态 错误CS1929“HttpRequest”不包含的定义 “CreateErrorResponse”和最佳扩展方法重载 'HttpRequestMessageExtensions.CreateErrorResponse(HttpRequestMessage, HttpStatusCode,string)“”需要类型为的接收器 “HttpRequestMessage”

所以,ASP.NET内核中发生了一些变化,我应该将HttpRequestMessage作为第一个参数。但是,如何创建它,以及为什么有必要进行响应

编辑:

我发现,无效模型可以通过以下代码返回:

return HttpBadRequest(ModelState);

但无论如何,我想知道一种灵活的方法来返回我自己的错误响应。

我发现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);
        }
    }
}

您可以从中添加和删除错误ModelState@tmg我可以,但我的问题是,我想把它返回给客户机是如此灵活,我怎么能在dotnet core 2.0的Web API中使用
返回BadRequest(ModelState)