我有一个非常简单的Web Api v2.2自我托管在OWIN
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);
时,我得到以下异常:
“SimpleInjector.ActivationException”类型的第一次机会异常 发生在SimpleInjector.dll
中附加信息:给定类型IHostBufferPolicySelector是 不是具体的类型。请使用其他重载之一进行注册 这种类型。
完整筹码:
发生了SimpleInjector.ActivationException _HResult = -2146233088
_message =给定类型IHostBufferPolicySelector不是具体类型。请使用其他一个重载来注册此类型 HResult = -2146233088 IsTransient = false Message =给定的类型 IHostBufferPolicySelector不是具体类型。请使用其中一个 注册此类型的其他重载。来源= SimpleInjector
堆栈跟踪: 在SimpleInjector.Advanced.DefaultConstructorResolutionBehavior.VerifyTypeIsConcrete(Type implementationType)InnerException:
问题不在于单个界面看起来SimpleInjector
正在尝试为每个单一界面找到绑定;如果我为IHostBufferPolicySelector
提供虚拟实现,它会抛出其他一些接口,例如IExceptionHandler
等。
有相关主题HERE,但我不确定它与SimpleInjector
的关系?
Self主机是一个Console App,它安装了以下软件包:
答案 0 :(得分:4)
简单注射器:
您展示的例外情况是“第一次机会异常”。这些 Simple Injector会抛出异常,但它们会被捕获 由Simple Injector处理,他们不会冒泡调用堆栈。 您可能在某些调试器输出窗口中看到它们,但是 他们很正常,没什么可担心的。
答案 1 :(得分:1)
事实证明,当Common Language Runtime Exceptions
检查到thrown
当我取消勾选复选框时,一切都正常!这很奇怪!将它包裹在Try-Catch (Exception)
中甚至不会抓住它,这使它更有趣/更有意思!