c# - ASP.NET Core 和 CreateErrorResponse

标签 c# asp.net asp.net-web-api asp.net-core

我想从我的 API 方法返回无效的 ModelState 并尝试像在 Web Api 中一样使用:

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

但它说,

Severity Code Description Project File Line Suppression State Error CS1929 'HttpRequest' does not contain a definition for 'CreateErrorResponse' and the best extension method overload 'HttpRequestMessageExtensions.CreateErrorResponse(HttpRequestMessage, HttpStatusCode, string)' requires a receiver of type 'HttpRequestMessage'

因此,ASP.NET Core 中发生了一些变化,我应该包含 HttpRequestMessage 作为第一个参数。但如何创建它以及为什么它在响应中是必要的?

编辑:

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

return HttpBadRequest(ModelState);

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

最佳答案

我发现 Mono 也没有实现这些; System.Web.Http/HttpRequestMessageExtensionsSystem.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);
        }
    }
}

关于c# - ASP.NET Core 和 CreateErrorResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963210/

相关文章:

c# - 如何解决重定向循环

asp.net - OAuth2 Web Api token 到期

C# 大字符串数组转字符串

c# - DotNetNuke 检索选项卡模块设置

c# - 如何在 ASP.NET 站点中使用 MySQL 数据库,而无需在开发期间进行连接?

javascript - 避免在 ASP.NET 中单击具有 onClick 和 onClientClick 事件的按钮时重新加载页面

c# - 我们如何隐藏 WebAPI 中的属性?

c# - 使用路由属性进行 Web API 版本控制时如何获取 Controller 名称

c# - Json 对象到 xamarin ListView

c# - 如何从 Xamarin 访问 iOS VPN API