[英]How to modify HttpContext in ActionExecutionContext to deny the request with a body?
ActionExecutionContext是在ActionFilter属性中定义的。
例:
internal class TestAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
context.HttpContext.Response.StatusCode = 400;
//context.HttpContext.Response.Body
}
}
如何使ActionExecutionContext的 HttpContext的响应具有状态代码400(错误请求),并且还具有诸如“您无权访问”的正文。
在ASP.NET中,您可以使用以下代码轻松完成此操作:
HttpActionContext.Response = new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = "You have no access.";
}
您可以使用以下方法定义状态代码
ActionExecutionContext.HttpContext.Response.StatusCode = 400;
但是内容如何呢?这真的是最好的方法-手动输入状态码吗?
正如dropoutcoder和stuartd所建议的那样 ,两种方法都是有效的,并且可以完美地工作!
internal class TestAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
// Suggested by dropoutcoder
context.HttpContext.Response.Clear();
context.HttpContext.Response.WriteAsync("You have no access").Wait();
context.HttpContext.Response.StatusCode = 400;
// Suggested by stuartd
context.Result = new BadRequestObjectResult("You have no access");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.