Я пытаюсь указать строку подключения динамически на основе URL-адреса, используя ninject.
Я использую пакет ninject.mvc nuget, который использует webActivator.
Мой код выглядит следующим образом:
моя инъекция:
kernel.Bind<IUnitOfWork>().To<UnitOfWork>()
.WithConstructorArgument("connectionString", MvcApplication.GetConnectionStringName());
мой глобальный.asax
private static HttpContext _context;
public static string GetConnectionStringName() {
var subDomain = String.Empty;
if (_context != null) {
subDomain = _context.Request.Url.SubDomain();
}
return String.Format("{0}ConnectionString", subDomain);
}
Проблема в том, что _context (который установлен в моем Application_BeginRequest) всегда равен нулю, потому что WebActivator запускается до application_start.
Можно ли в ninject указать вызов MvcApplication.GetConnectionStringName()
, когда требуется IUnitOfWork
, а не при запуске приложения?
Есть ли лучший подход к тому, что я делаю?
Спасибо