asp.net-mvc – ASP.NET MVC 4动作过滤器问题
发布时间:2020-12-16 06:25:28 所属栏目:asp.Net 来源:网络整理
导读:我想创建一个过滤器并将其放在需要数据库访问的操作上.此过滤器将处理当前工作单元,因此我不需要在一个操作中手动调用它一次或多次. 我这样做: public class DisposeUnitOfWorkAttribute :FilterAttribute,IActionFilter { public TaskHttpResponseMessage
我想创建一个过滤器并将其放在需要数据库访问的操作上.此过滤器将处理当前工作单元,因此我不需要在一个操作中手动调用它一次或多次.
我这样做: public class DisposeUnitOfWorkAttribute :FilterAttribute,IActionFilter { public Task<HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext,CancellationToken cancellationToken,Func<Task<HttpResponseMessage>> continuation) { IUnitOfWork currentUnitOfWork = UnitOfWork.Current; if (currentUnitOfWork != null) { currentUnitOfWork.Dispose(); } return null; } public bool AllowMultiple { get { return false; } } } public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new DisposeUnitOfWorkAttribute()); filters.Add(new HandleErrorAttribute()); } } [DisposeUnitOfWork] public ViewResult Index() { var user = _usersRepository.Get(x => x.Username == "jack").ToList(); //UnitOfWork.Current.Dispose(); return View(); } 我得到异常:给定的过滤器实例必须实现以下一个或多个过滤器接口:IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter. 我怎么能纠正这个? 解决方法
根据您的代码判断,您尝试将过滤器用作Web API过滤器,但将其添加到FilterConfig.cs中的错误过滤器集合(类似MVC)
The given filter instance must implement one or more of the following filter interfaces: IAuthorizationFilter,IExceptionFilter. 您应该在WebApiConfig.cs中将过滤器添加到Web API全局过滤器集合: public static void Register(HttpConfiguration config) { // Add custom global filters // Handle validation errors config.Filters.Add(new DisposeUnitOfWorkAttribute()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读