Asp.net mvc 如何在MVC 6中的HttpStatusCodeResult中显示自定义消息?
在MVC 5中,可以提供状态描述,例如: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中显示自定义消息?我发现的一个解决方案涉及构建一个额外的类,但可以很好
返回新的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来展示一个更简单的例子
希望这有帮助