Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在MVC 6中的HttpStatusCodeResult中显示自定义消息?_Asp.net Mvc_Asp.net Core Mvc - Fatal编程技术网

Asp.net mvc 如何在MVC 6中的HttpStatusCodeResult中显示自定义消息?

Asp.net mvc 如何在MVC 6中的HttpStatusCodeResult中显示自定义消息?,asp.net-mvc,asp.net-core-mvc,Asp.net Mvc,Asp.net Core Mvc,在MVC 5中,可以提供状态描述,例如: 返回新的HttpStatusCodeResult(500,“无法连接到数据库”) 这是使用System.Web.Mvc.HttpStatusCodeResult 在带有Microsoft.AspNet.MVC.HttpStatusCodeResult的MVC 6中,唯一的参数是statusCode Shaun Wildermuth在本文中提到了这个问题-请参阅错误处理 如何在MVC 6中显示自定义消息?我发现的一个解决方案涉及构建一个额外的类,但可以很好

在MVC 5中,可以提供状态描述,例如:

返回新的HttpStatusCodeResult(500,“无法连接到数据库”)

这是使用
System.Web.Mvc.HttpStatusCodeResult

在带有Microsoft.AspNet.MVC.HttpStatusCodeResult的MVC 6中,唯一的参数是
statusCode

Shaun Wildermuth在本文中提到了这个问题-请参阅错误处理


如何在MVC 6中显示自定义消息?

我发现的一个解决方案涉及构建一个额外的类,但可以很好地解决缺少StatusCodeDescription的问题

internal class ResponseWriter : ActionResult
    {
        private byte[] _stringAsByteArray;
        private int _statusCode;
        public ResponseWriter(string stringToWrite, int statusCodeToWrite)
        {
            _stringAsByteArray = Encoding.ASCII.GetBytes(stringToWrite);
            _statusCode = statusCodeToWrite;
        }
        public override Task ExecuteResultAsync(ActionContext context)
        {
            context.HttpContext.Response.StatusCode = _statusCode;
            return context.HttpContext.Response.Body.WriteAsync(_stringAsByteArray, 0, _stringAsByteArray.Length);
        }

    }

public IActionResult OKResponse()
{
 return new ResponseWriter("Response description!", 200);
}
public IActionResult BadResponse()
{
 return new ResponseWriter("There was an error!", 500);
}
该博客的功劳如下:

我在博客中修改了StringWriterResult类,将自定义Http状态包含为int

注意,您可能应该在构造函数中使用HttpStatusCode代替int来遵守HTTP 1.1标准。我只是用int来展示一个更简单的例子

希望这有帮助