【发布时间】:2021-05-21 19:37:07
【问题描述】:
我试过这个答案:[https://stackoverflow.com/questions/18406506/custom-filter-attributes-inject-dependency][1] 为 Web API 项目实现 ActionFilterAttribute (System.Web.Http.Filters) (不是MVC)。但是我的自定义属性从未在控制器中调用过。如有任何建议,我将不胜感激。
自定义属性:
public class MyAttribute : FilterAttribute { }
过滤器:
public class MyFilter : ActionFilterAttribute
{
private readonly IMyService _myService;
public MyFilter(IMyService myService)
{
_myService = myService;
}
public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
//do some with actionContext
throw new Exception("You can`t go here");
}
}
控制器方法:
[My] // Not called
[HttpPost]
[Route("/do-some")]
public async Task DoSome(string myString)
{
//do some
}
注册过滤器:
public partial class Startup
{
protected void ConfigureApi(IAppBuilder app, IContainer container)
{
var configuration = new HttpConfiguration();
//...
var serviceInstance = container.GetInstance<IMyService>();
configuration.Filters.Add(new MyFilter(serviceInstance));
}
}
这里有什么问题吗?
【问题讨论】:
标签: asp.net .net asp.net-web-api