如何用ModelConvention在Asp.Net Core全局过滤器中改写长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1893个文字,预计阅读时间需要8分钟。
从何说起?这次我从将项目迁移到Asp.Net Core的过程中,遇到了一个问题。在一个web程序中,同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器 + IActionFilter,常规做法一般是这样:
从何说起
这来自于我把项目迁移到Asp.Net Core的过程中碰到一个问题。在一个web程序中同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器 IActionFilter ,常规做法一般是写好过滤器后给需要的控制器挂上这个标签,高级点的做法是注册一个全局过滤器,这样可以避免每次手动添加同时代码也更好管理。注册全局过滤器的方式为:
services.AddMvc(options => { options.Filters.Add(typeof(AccessControlFilter)); });
但这样做会带来一个问题,那就是MVC部分控制器也会受影响,虽然可以在过滤器中进行一些判断来区分哪些是MVC Controller哪些是API Controller,但是平白无故给MVC增加这么一个没用的Filter,反正我是不能忍,所以寻找有没有更好的办法来实现这个功能。
于是ModelConvention(可以翻译为模型约定)闪亮登场。
本文共计1893个文字,预计阅读时间需要8分钟。
从何说起?这次我从将项目迁移到Asp.Net Core的过程中,遇到了一个问题。在一个web程序中,同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器 + IActionFilter,常规做法一般是这样:
从何说起
这来自于我把项目迁移到Asp.Net Core的过程中碰到一个问题。在一个web程序中同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器 IActionFilter ,常规做法一般是写好过滤器后给需要的控制器挂上这个标签,高级点的做法是注册一个全局过滤器,这样可以避免每次手动添加同时代码也更好管理。注册全局过滤器的方式为:
services.AddMvc(options => { options.Filters.Add(typeof(AccessControlFilter)); });
但这样做会带来一个问题,那就是MVC部分控制器也会受影响,虽然可以在过滤器中进行一些判断来区分哪些是MVC Controller哪些是API Controller,但是平白无故给MVC增加这么一个没用的Filter,反正我是不能忍,所以寻找有没有更好的办法来实现这个功能。
于是ModelConvention(可以翻译为模型约定)闪亮登场。

