And*_*kov 8 asp.net-mvc action-filter asp.net-web-api
我的WebApi过滤方法OnActionExecuted
被调用两次.我的过滤器(我尽可能简单):
public class NHibernateActionFilter : ActionFilterAttribute
{
// [Inject]
// public ISessionFactoryProvider sessionFactoryProvider { get; set; }
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
var a = 5;
var b = a;
//new BaseSessionProvider(sessionFactoryProvider).EndContextSession();
}
}
Run Code Online (Sandbox Code Playgroud)
我的设置:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
//http://stackoverflow.com/questions/9521040/how-to-add-global-asp-net-web-api-filters
FilterConfig.RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
}
public class FilterConfig
{
public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
{
filters.Add(new NHibernateActionFilter());
}
}
Run Code Online (Sandbox Code Playgroud)
在调试器中,我OnActionExecuted
用相同的方法捕获两次actionExecutedContext
.为什么?
UPD
Controller
public class BankSmsController : ApiController
{
[AcceptVerbs(HttpVerbs.Get)]
public int GetTest()
{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个怀疑,这个奇怪的行为可以通过覆盖AllowMultiple
filter的属性并返回false 来修复,或者将AttributeUsage
属性AllowMultiple
设置为false也是如此(这会影响AllowMultiple
filter 的属性的默认实现).
至少在我们的项目中这有帮助(我们通过Autofac注入过滤器).
归档时间: |
|
查看次数: |
5786 次 |
最近记录: |