如何使用 mvc 6、asp.net 5 注册全局过滤器
Posted
技术标签:
【中文标题】如何使用 mvc 6、asp.net 5 注册全局过滤器【英文标题】:How to register a global filter with mvc 6, asp.net 5 【发布时间】:2015-07-06 04:03:03 【问题描述】:我正在尝试在一个简单的 mvc 应用程序中注册一个过滤器。除了要测试的基本过滤器之外,我什至还没有真正写过任何东西。我正在使用 VS 2015 RC,并通过转到新项目 -> Asp.net Web 应用程序 -> Web API 创建了初始应用程序。我遇到的问题是我找不到全局注册过滤器的方法。
在 MVC 的早期版本中,我看到了 GlobalFilters.Filters
,但是当我尝试在新框架中使用它时,它告诉我找不到 GlobalFilters。在以前的版本中,它存在于 System.Web.MVC 中,但我不再在我的参考资料中看到它,而且我似乎无法在任何地方找到它。
这看起来应该很简单,但到目前为止我还没有找到方法。
这是我的 project.json
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies":
"Microsoft.AspNet.Mvc": "6.0.0-beta4",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta4",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta4"
,
"commands":
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
,
"frameworks":
"dnx451":
"frameworkAssemblies":
,
"dnxcore50":
,
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
]
【问题讨论】:
App_Data 文件夹中通常有一个FilterConfig 类;这就是你所追求的吗? 好吧,FilterConfig 接受了 GlobalFilters.Filters,但我无法让 GlobalFilters 开始 您是否尝试纯粹通过 project.json 文件注册过滤器?此外,您已标记此 MVC5,但显示的配置文件表明您正在使用 MVC6;对吗? 抱歉,我忘记了我是 6 号。我一直在玩最新的测试版,但弄糊涂了。我正在尝试在 startup.cs 中注册过滤器,该过滤器是从 ASP.net 5 预览模板下的 VS 2015 RC 默认 Web api 项目自动生成的 在 MVC 6 中情况确实发生了变化。我认为这篇文章会对你有所帮助。 strathweb.com/2015/02/overriding-filters-asp-net-mvc-6 【参考方案1】:现在使用 Beta 8 通过 AddMvc 完成,如下所示:
services.AddMvc(options =>
options.Filters.Add(new YouGlobalActionFilter());
);
【讨论】:
感谢您的回答!是否可以仅对某些特定的 mvc 区域应用过滤器? (我希望我的后端对匿名用户关闭,而不是前端。)谢谢!【参考方案2】:如何在 MVC 6 中执行此操作的示例
public void ConfigureServices(IServiceCollection services)
services.AddMvc();
services.ConfigureMvc(options =>
options.Filters.Add(new YouGlobalActionFilter());
【讨论】:
此答案不再有效,请参阅 Lee Jones 答案 (***.com/a/33768705/11220)以上是关于如何使用 mvc 6、asp.net 5 注册全局过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 6 中注册 ILogger 以进行注入
ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
ASP.Net 5 MVC 6,如何使用共享 Error.cshtml 作为默认错误响应
如何在 Asp.Net 5 (MVC 6) 中使用实体框架 6.x