Jam*_*mer 11 c# asp.net-mvc asp.net-web-api
我正在尝试将自定义IHttpActionInvoker添加到我的WebAPI应用程序中,以防止在我的操作方法中需要大量重复的异常处理代码.
除了这篇文章之外,关于如何做到这一点似乎并没有多少.根据文章写了我的IHttpActionInvoker后,我添加了这段代码:
GlobalConfiguration.Configuration.Services.Remove(typeof(IHttpActionInvoker),
GlobalConfiguration.Configuration.Services.GetActionInvoker());
GlobalConfiguration.Configuration.Services.Add(typeof(IHttpActionInvoker),
new MyApiControllerActionInvoker());
Run Code Online (Sandbox Code Playgroud)
进入我的Global.asax文件中的方法.现在,在执行对API的调用时,我在Remove()方法中引发了以下异常:
The service type IHttpActionInvoker is not supported
Run Code Online (Sandbox Code Playgroud)
我想我有两个问题.
考虑到编写自定义IHttpActionInvoker类没有被认为是一个很糟糕的问题,这被认为是解决WebAPI应用程序中的异常处理的好方法吗?
有谁知道为什么我在执行Remove()方法时会遇到这样的异常以及如何最好地解决这个特定问题?
尝试删除服务时,我遇到了您描述的相同错误.
我发现我不需要从全局配置中删除任何内容,因为如果您在容器中注册了接口,它就会出现,然后它将首先解决此问题.
例如,我正在使用SimpleInjector,在我的global.asax中我有这个:
container.Register<IHttpActionInvoker , MyApiControllerActionInvoker >();
// Register the dependency resolver.
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
在运行时,它在需要时解析MyApiControllerActionInvoker依赖项.
然后,您可以在客户ActionInvoker中执行异常处理,并且构造函数中设置的任何依赖项都将正确连接.我查看ActionInvoker的原因是为了获取构造函数注入,因为注入Attributes似乎需要注入属性.
而不是删除/插入,替换似乎工作.(在Global.asax中)
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpActionInvoker), new MyApiControllerActionInvoker(fooService));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4306 次 |
| 最近记录: |