作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个继承 ActionFilterAttribute
的类。
它会解密调用者加密的请求中的一些查询字符串属性。这确保我的 WebAPI 方法仅接收“良好”参数。效果很好。
如果参数未加密,我需要做但没有成功的是否定/失败上下文(请求)。
如何强制终止请求?我在做我的逻辑:
public override void OnActionExecuting(ActionExecutingContext context)
已经尝试将响应设置为 401,但这不起作用:
//Negate the access by default
context.HttpContext.Response.StatusCode = 401;
最佳答案
正如 Clint B 所说,其中一种方法是使用中间件。 Here是一个关于中间件的 ASP Core 文档,带有操作示例
另一方面,如果您使用 MVC 并希望使用 ActionFilter 强制 MVC Action 停止,您可以通过将 Action Context .Result
属性设置为非空值来实现值(value)。
例子:
actionContext.HttpContext.Response.StatusCode = 401;
actionContext.HttpContext.Response.Headers.Clear();
actionContext.Result = new EmptyResult();
//var wrongResult = new { error = "Wrong parameters"};
//actionContext.Result = new JsonResult(wrongResult);
How to chose between Middleware and Action filter? Action filter can be used as a method filter, controller filter, or global filter only for MVC HTTP requests.
Middleware is component that "sits" on the HTTP pipeline and examines all requests and responses.
关于asp.net-core - 如何在 ActionFilterAttribute 中强制请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575696/
我是一名优秀的程序员,十分优秀!