首页 > 解决方案 > .Net 标准/核心版本的 system.web.http.HttpError

问题描述

在将 .net Framework 迁移到 .net Standard/Core 时,我遇到了 HttpError 类。除了 Compatability Shim 之外,我在 .net core/standard 中找不到任何等效项,这只是一个临时解决方案。

不知道有没有官方的替代品?也许 API 发生了变化,并且有一个新的最佳实践可以用来代替 HttpError。

谢谢!

标签: .netasp.net-core.net-coremigration

解决方案


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;
        }
    }
}

您还可以派生该类来定义更具体的预定义错误类型,请参阅本文本文了解更多详细信息和代码示例。

编辑 :

从版本 2.1 开始,它添加了对RFC 7807 的支持——HTTP API 的问题详细信息作为从 HTTP API 返回机器可读错误响应的标准化格式:

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


推荐阅读