如何使用 AutoFac 注册全局操作过滤器?
通常建议的方法(如下所列)似乎不正确,因为一旦应用程序启动并初始化所有依赖关系图,动作过滤器就会被解析。但是,如果操作过滤器使用任何一次性对象(例如非直接但通过服务层的 DB 会话),则它工作不正确,因为全局过滤器创建一次并且一直存在,而不是在处理依赖服务时重新创建。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
var userLocatorFilter = ContainerHolder.Container.Resolve<UserLocatorAttribute>();
var userStatusFilter = ContainerHolder.Container.Resolve<UserStatusAttribute>();
var logErrorFilter = ContainerHolder.Container.Resolve<LogErrorAttribute>();
// or DependencyResolver.Current.GetService<CustomFilterAttribute>()
filters.Add(userLocatorFilter);
filters.Add(userStatusFilter);
filters.Add(logErrorFilter);
}
所以我想知道是否有任何类型的全局过滤器注册/解析过程会在每个请求左右重新创建/处理它?换句话说,应该有生命周期有限的全局过滤器。
如果您需要更详细的问题解释,请告诉我。