Я преобразование проекта из WCF Web API для ASP.NET Web API - спасибо MS :(ASP.NET Web API (Self хоста) + Ninject - по умолчанию привязок
самообслуживания хостинг 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 (объект).
Проблема, с которой я столкнулся, заключается в том, когда я пытаюсь запустить ее, существует множество привязок, которые больше не зарегистрированы (то есть IHttpContollerFactory
, ILogger
и т. Д.).
Должен ли я пройти один за другим и перерегистрировать все зависимости по умолчанию? Кажется странным, что значения по умолчанию регистрируются с помощью распознавателя зависимостей по умолчанию, но я не вижу быстрого способа перерегистрировать значения по умолчанию при установке нового зависимого преобразователя. Для чего-то вроде ILogger
, я даже не могу получить доступ к умолчанию System.Web.Http.Common.Logging.DiagnosticLogger
, чтобы сделать привязку.
Я что-то упустил?
Возможно, тогда вопрос о том, что NinjectServiceLocator бросает исключение, когда отображение не найден. Я буду исследовать дальше. –
@ Discofunk Да, это так. Но структура проглотит это исключение для вас. –
Я вижу. При запуске в отладке VS2010 прерывается исключение, но затем, похоже, проглатывается. –