我正在将一个项目从 WCF Web API 转换为 ASP.NET Web API - 感谢 MS :(
自托管 POC 代码:
static void Main(string[] args)
{
var kernel = new StandardKernel();
const string baseAddress = "http://localhost:8080";
var config = new HttpSelfHostConfiguration(baseAddress);
config.ServiceResolver.SetResolver(new NinjectServiceLocator(kernel));
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new {id = RouteParameter.Optional});
var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
Console.WriteLine("The server is running....");
Console.ReadLine();
}
我将 Ninject 注册为依赖解析器。为此,我使用CommonServiceLocator.NinjectAdapter
来注册它:
config.ServiceResolver.SetResolver(new NinjectServiceLocator(kernel));
据我所知,这似乎有效,尽管使用 SetResolver(object) 感觉有点脏。
我现在遇到的问题是,当我尝试运行它时,有很多绑定不再注册(即IHttpContollerFactory
,ILogger
等)。
我是否必须一个接一个地重新注册所有“默认”依赖项?使用默认依赖解析器注册默认值似乎很奇怪,但是当设置新的依赖解析器时,我看不到重新注册默认值的快速方法。对于类似的东西ILogger
,我什至似乎无法访问默认值System.Web.Http.Common.Logging.DiagnosticLogger
来进行绑定。
我错过了什么吗?