【发布时间】:2014-12-26 11:39:08
【问题描述】:
我有一个非常简单的 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(类型 implementationType) InnerException:
问题不在于看起来像SimpleInjector 的单一接口试图为每个单一接口寻找绑定;如果我为IHostBufferPolicySelector 提供一个虚拟实现,它会抛出一些其他接口,例如IExceptionHandler等
有一个相关的线程HERE,但我不确定它与SimpleInjector 有什么关系?
Self 主机是一个控制台应用程序,其中安装了以下软件包:
- 简单注入器 ASP.NET Web API 集成 v2.61
- 简单的注入器执行上下文范围 v2.61
- Simple Injector v2.61
- OWIN v1.0
- Microsoft.Owin v2.0.2
- Microsoft.Owin.Hosting v2.0.2
- Microsoft ASP.NET Web API 2.2 OWIN v5.2.2
- Microsoft ASP.NET Web API 2.2 OWIN Self Host v5.2.2
【问题讨论】:
-
IHostBufferPolicySelector的注册地址在哪里? -
什么是
IHostBufferPoslicySelector,什么是可用的(默认)实现? -
请发布完整的堆栈跟踪。
-
@MaYaN:这不是完整的堆栈跟踪。请同时包括所有内部异常。尤其是这里的一切。所以我们需要查看从请求开始到此时的完整堆栈跟踪。
-
@Steven,这确实是完整的堆栈,我现在已经更新了问题以包括所有其他位,但仅此而已。
标签: asp.net-web-api owin asp.net-web-api2 self-hosting simple-injector