首页 > 解决方案 > 等效于 .Net Core 中的 HttpResponse.StatusDescription 设置状态码描述

问题描述

如何更改 .Net Core 应用程序的状态描述。我正在寻找与 .Net 4.8 HttpResponse.StatusDescription等效的东西。

代替

HTTP/1.1 400 Bad Request

我想将 Bad Request 更改为我的应用程序中的某些内容

HTTP/1.1 400 Custom Error Message

我知道还有其他发送错误文本的方法,但是我需要支持仅从状态代码文本字段中读取错误消息的遗留应用程序。

如果相关,这将使用 .net core 3.1 在 IIS 上运行

标签: c#asp.net-coreasp.net-core-3.1

解决方案


这是一种可能的方法:

public class CustomResult : IActionResult
{
    private readonly string _errorMessage;
    private readonly int _statusCode;

    public CustomResult(string errorMessage, int statusCode)
    {
        _errorMessage = errorMessage;
        _statusCode = statusCode;
    }

    public async Task ExecuteResultAsync(ActionContext context)
    {
        var objectResult = new ObjectResult(_errorMessage)
        {
            StatusCode = _statusCode
        };

        await objectResult.ExecuteResultAsync(context);
    }
}

以及在动作过滤器中的用法:

context.Result = new CustomResult("Custom Error Message", StatusCodes.Status400BadRequest);  

或在行动本身:

public IActionResult Save()
{
    return new CustomResult("Custom Error Message", StatusCodes.Status400BadRequest);
}

推荐阅读