오늘 새롭게 Ninject 2.0 및 Ninject.Web.Mvc (대상 mvc2) 소스를 다운로드하고 .NET 4 (릴리스 구성)에 대해 성공적으로 빌드했습니다. Ninject 2.0을 사용하여 응용 프로그램을 실행하려고하면 404 오류가 계속 발생하며 이유를 파악할 수 없습니다.이 404는 피할 수없는 것처럼 보입니다 - 내가 뭘 잘못하고 있니? [.NET 4에서 ASP.NET MVC 2를 사용하는 Ninject 2.0]
이것은 (약간 간결, shortified) 내 global.asax.cs입니다 :
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
가 존재하고, 단순히 return View()
않는 Index
방법이있다. 디버깅을했고 RegisterAllControllersIn()
에 대한 호출이 실행되었는지 확인했습니다. 나는 또한 Phil Haacks Routing debugger을 사용하려고 시도했지만 여전히 404를 얻습니다.
원인을 찾기 위해 무엇을해야합니까?
Ninject 1.5에서, 이것은 내가 상속 한'NinjectHttpApplication'에 의해 자동으로 수행되었습니다. Reflector에서 어셈블리를 살펴본 결과,이 버전에서는'RegisterRoutes()'에 대한 호출을 발견하지 못했지만 스스로 할 수 있는지 확신 할 수 없습니다. 인수로 필요한 RouteTable은 어디에서 얻을 수 있습니까? –
Brilliant! 'NinjectHttpApplication'의'Application_Start()'메소드를 더 자세히 살펴본 결과,'RouteCollection'을위한 바인딩이 있음을 알았습니다. 간단한 'RegisterRoutes (Kernel.Get());'를 내 init 메소드에 추가하면 문제가 해결되었습니다. 감사! –