Я загрузил довольно новые источники Ninject 2.0 и Ninject.Web.Mvc (таргетинг на mvc2) сегодня и успешно их создал против .NET 4 (настройка выпуска). При попытке запустить приложение с использованием Ninject 2.0 я продолжаю получать 404 ошибки, и я не могу понять, почему.Это 404 кажется неизбежным - что я делаю неправильно? [Ninject 2.0 с ASP.NET MVC 2 на .NET 4]
Это мой Global.asax.cs (немного shortified, для краткости):
using ...
using Ninject;
using Ninject.Web.Mvc;
using Ninject.Modules;
namespace Booking.Web
{
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
Booking.Models.AutoMapperBootstrapper.Initialize();
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
base.OnApplicationStarted();
}
protected void RegisterRoutes(RouteCollection routes)
{
...
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Entry", action = "Index", id = "" }
);
}
protected override IKernel CreateKernel()
{
INinjectModule[] mods = new INinjectModule[] {...};
return new StandardKernel(mods);
}
}
}
EntryController
существует, и имеет Index
метод, который просто делает return View()
. Я отлаживал и проверял, что выполняется вызов RegisterAllControllersIn()
. Я также пытался использовать Phil Haacks Routing debugger, но я все еще получаю 404.
Что мне нужно сделать, чтобы найти причину этого?
В Ninject 1.5 это было сделано автоматически с помощью 'NinjectHttpApplication', который я наследую. Я взглянул на сборку в Reflector и не нашел никакого вызова функции registerRoutes() в этой версии, но я не уверен, что могу сделать это сам. Где я могу получить «RouteTable» в качестве аргумента? –
Блестящий! Я еще больше изучил метод 'Application_Start()' в 'NinjectHttpApplication' и заметил, что там есть привязка для' RouteCollection'. Добавление простого 'RegisterRoutes (Kernel.Get());' к моему методу init разрешило проблему. Благодаря! –