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據:

你是顯示唯一的例外是 '第一次機會異常'。這些 異常由簡單注入器引發,但它們被捕獲並且由簡單注入器處理,並且它們不會冒泡調用堆棧。 您可能會在某些調試器輸出窗口中看到它們,但它們非常正常,無需擔心。

相關問題