【发布时间】:2016-03-23 19:38:33
【问题描述】:
我有以下属性。
我需要做的:
- 在
filterContext.Result中向浏览器返回一条消息(我想就是在那个地方做) - 能够停止正在执行的操作
但是,在启动调试进程后,调试器进入OnActionExecuting 方法,我看到一个错误而不是我的页面。我以为它会在 SearchItems 方法之前执行 - 为什么会发生这种情况?
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool isValid = false; //some logic here
if (!isValid)
{
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.PaymentRequired;
filterContext.Result = new EmptyResult();
return;
}
base.OnActionExecuting(filterContext);
}
}
global.asax
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyAttribute());
filters.Add(new HandleErrorAttribute());
}
控制器:
public class MainApiController : ApiController
{
[MyAttribute]
[HttpPost]
public HttpResponseMessage SearchItems()
{
...
}
}
【问题讨论】:
-
你能改写你的问题吗?这一点都不清楚(对我来说)。你的代码和你对正在发生的事情的描述似乎都是一致的。