5

我在OWIN举办一个非常简单的网络API v2.2的自我为什么我在OWIN中使用WebApi Self自带的Simple Injector时遇到此ActivationException?

public class StartUp 
{ 
    public void Configuration(IAppBuilder appBuilder, IConfigReader configReader) 
    { 
     var container = new Container(); 

     container.Register<IConfigReader, ConfigReader>(); 

     var config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); 
     appBuilder.UseWebApi(config); 
    } 
} 

当我然后用我的Main()为:

WebApp.Start(baseAddress, appBuilder => 
       new StartUp().Configuration(appBuilder, new ConfigReader())); 

然而,当我尝试执行的最后一行appBuilder.UseWebApi(config);我得到以下例外:

在SimpleI中发生了SimpleInjector.ActivationException' 类型的第一次机会异常njector.dll

附加信息:给定类型IHostBufferPolicySelector是 不是一个具体类型。请使用其他过载之一来注册 这种类型。

完整堆栈:

SimpleInjector.ActivationException发生_HResult = -2146233088
_message =给定的类型IHostBufferPolicySelector不是一个具体类型。请使用其他重载之一来注册此类型。
HResult = -2146233088 IsTransient = false消息=给定类型 IHostBufferPolicySelector不是一个具体类型。请使用其中一个 其他重载注册此类型。来源= SimpleInjector
堆栈跟踪: 在SimpleInjector.Advanced.DefaultConstructorResolutionBehavior.VerifyTypeIsConcrete(类型 implementationType)的InnerException:

的问题不在于单一的界面,它看起来像SimpleInjector正在努力寻找每一个接口的绑定;如果我为IHostBufferPolicySelector提供虚拟实现,则会引发其他一些接口,例如IExceptionHandler

有一个相关的线程HERE但我不知道它是如何与SimpleInjector? 自我主机是一个控制台应用程序,其安装了以下软件包:

  • 简单的喷油器的ASP.NET Web API集成v2.61
  • 简单的喷油器执行上下文作用域v2.61
  • 简单的喷油器V2。 61
  • OWIN 1.0
  • Microsoft.Owin V2.0.2
  • Microsoft.Owin.Hosting V2.0.2
  • 微软ASP.NET我们b API 2.2 OWIN v5.2.2
  • Microsoft ASP.NET Web API 2.2 OWIN Self Host v5.2。2
+0

其中是'IHostBufferPolicySelector'的注册? – qujck 2014-10-30 12:24:22

+0

什么是'IHostBufferPoslicySelector'和什么是avaialble(默认)实现? – MaYaN 2014-10-30 12:25:59

+0

请发布完整的堆栈跟踪。 – Steven 2014-10-30 12:28:15

回答

1

原来,当我有Common Language Runtime Exceptions检查thrown

当我取消选中该复选框一切表现为正常的例外只有冒泡!这很奇怪!也包装它在Try-Catch (Exception)甚至没有抓住它,这使得它更加有趣/ werid!

+0

伟大的你发现如何获得一个完整的堆栈跟踪。你能用这些信息更新你的问题吗? – Steven 2014-10-30 12:57:45

+0

[这里是一个例子](https://stackoverflow.com/questions/25973238/simpleinjector-no-parameterless-constructor-defined-for-this-object)一个完整的堆栈跟踪如何可能看起来像。 – Steven 2014-10-30 13:00:04

+0

Steven,我在问题中发布的是'all',即使我将它封装在Try-Catch中,断点也不会被打到,因此无法对其执行'ToString()'操作。我上面发布的是我直接从VisualStudio中的'Thrown对话框'复制的内容。它甚至没有在“全局应用程序域异常处理程序”中捕获到# – MaYaN 2014-10-30 13:31:40

3

Simple Injector据:

你是显示唯一的例外是 '第一次机会异常'。这些 异常由简单注入器引发,但它们被捕获并且由简单注入器处理,并且它们不会冒泡调用堆栈。 您可能会在某些调试器输出窗口中看到它们,但它们非常正常,无需担心。

相关问题