У меня есть новый проект MVC 2, использующий ninject 2 для IOC.У меня есть следующий global.asax, который настраивает как NHibernate, так и Ninject.Код работает нормально, ninject извлекает контроллеры из сборки (когда он это делает - он конвертирует их в младшие строки) -
Все URL моего контроллера теперь чувствительны к регистру, поэтому, /Home не разрешится, но / home разрешит.
Когда я использую первую букву в верхнем регистре (значение по умолчанию в MVC), я получаю ошибку «IControllerFactory Ninject.Web.Mvc.NinjectControllerFactory» не возвращает контроллердля названия «Дом». "
Неужели это не нормально?Любые идеи?
открытый класс MvcApplication: NinjectHttpApplication {public static ISessionFactory SessionFactory = CreateSessionFactory ();public MvcApplication () {this.BeginRequest + = новый EventHandler (MvcApplication_BeginRequest);this.EndRequest + = новый EventHandler (MvcApplication_EndRequest);}
void MvcApplication_BeginRequest(object sender, EventArgs e)
{
CurrentSessionContext.Bind(SessionFactory.OpenSession());
}
void MvcApplication_EndRequest(object sender, EventArgs e)
{
CurrentSessionContext.Unbind(SessionFactory).Dispose();
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
private static ISessionFactory CreateSessionFactory()
{
var cfg = new Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "nhibernate.config"));
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, @"Data Source=.\;Initial Catalog=xxxxxx;Integrated Security=true;");
//cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, System.Environment.MachineName);
NHibernateProfiler.Initialize();
return cfg.BuildSessionFactory();
}
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new INinjectModule[] {
new ServiceModule(),
});
}
}