.net标准/核心版本的system.web.http.HttpError

时间:2018-12-06 10:57:21

标签: .net asp.net-core .net-core migration

从.net Framework迁移到.net Standard / Core时 我遇到了HttpError类。 除了Compatability Shim只是临时解决方案之外,我在.net核心/标准中找不到任何等效项。

您知道是否有官方替代品吗?也许API已经更改,并且有一种新的最佳实践可以代替HttpError使用。

谢谢!

1 个答案:

答案 0 :(得分:1)

HttpError对象提供了一种一致的方法来在响应正文中返回错误信息。在asp.net Core Web API中,您可以定义ApiResponse基类,例如:

public class ApiResponse
{
    public int StatusCode { get; }

    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string Message { get; }

    public ApiResponse(int statusCode, string message = null)
    {
        StatusCode = statusCode;
        Message = message ?? GetDefaultMessageForStatusCode(statusCode);
    }

    private static string GetDefaultMessageForStatusCode(int statusCode)
    {
        switch (statusCode)
        {
            ...
            case 404:
                return "Resource not found";
            case 500:
                return "An unhandled error occurred";
            default:
                return null;
        }
    }
}

您还可以派生此类来定义更具体的预定义错误类型,有关更多详细信息和代码示例,请参阅thisthis文章。

编辑:

从2.1版开始,它添加了对RFC 7807 – Problem Details for HTTP APIs的支持,这是一种标准化格式,用于从HTTP API返回机器可读的错误响应:

参考:https://blogs.msdn.microsoft.com/webdev/2018/02/27/asp-net-core-2-1-web-apis/