如何解决web api中的简单注入器问题?

时间:2016-11-13 19:45:17

标签: c# asp.net asp.net-web-api simple-injector

我在我的web api服务中使用Simple Injector IoC容器。目前,我遇到了一个我发现很难调查的错误。

容器配置如下:

var container = new Container();

container.Options.DefaultScopedLifestyle = new WebApiRequestLifestyle();

container.Register<IQueryHandler<LoginQuery, AccountDTO>, LoginQueryHandler>(
    Lifestyle.Scoped);

当请求进入Web服务时,它们不是被路由到控制器,而是由自定义消息处理程序处理。这些处理程序是通过继承DelegatingHandler类创建的(有关详细信息,请参阅here)。

然后,自定义消息处理程序将查看请求并调用特定处理程序来处理请求。这样做如下:

// For the sake of the example (and my testing), I have hard coded the types
// below, but usually these are pulled from the request.
Type handlerType = typeof(IQueryHandler<,>)
    .MakeGenericType(typeof(AccountQuery), typeof(AccountDTO));

try
{
    // Something does wrong here
    dynamic handler = this.handlerFactory.Invoke(handlerType);

    // Code execution never reaches this point, exception is not caught
    ... other code
}
// I have also just tried catching the general exception
catch (TargetInvocationException ex)
{
    // do something
}

我当前的问题是,当尝试从处理程序工厂(简单注入器)调用处理程序时出现问题。当我进行调试时,只要我逐步执行该行,我就会想到Web服务遇到异常,然后返回(我的客户端只得到一个&#34;内部服务器错误&#34;消息)。尽管有try / catch,但没有例外,所以我完全不知道发生了什么。我认为我可能有一些配置错误的简单注射器,但我不知道是什么(简单的注射器验证成功)。

有没有人建议我在这里做些什么来弄清楚发生了什么?

0 个答案:

没有答案