2010-04-01 4 views
1

오늘 새롭게 Ninject 2.0Ninject.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를 얻습니다.

원인을 찾기 위해 무엇을해야합니까?

답변

0

경로가 등록되어 있습니까? 그것이 기본 클래스에서 호출되고 있습니까?

컨트롤러를 올바르게 등록했는지 확인하십시오.. 나는 Ninject의 컨트롤러 팩토리가 어떻게 그것을 기대하는지 모르겠다. 그러나 특정 이름이나 뭔가가 필요할지도 모른다.

+0

Ninject 1.5에서, 이것은 내가 상속 한'NinjectHttpApplication'에 의해 자동으로 수행되었습니다. Reflector에서 어셈블리를 살펴본 결과,이 버전에서는'RegisterRoutes()'에 대한 호출을 발견하지 못했지만 스스로 할 수 있는지 확신 할 수 없습니다. 인수로 필요한 RouteTable은 어디에서 얻을 수 있습니까? –

+0

Brilliant! 'NinjectHttpApplication'의'Application_Start()'메소드를 더 자세히 살펴본 결과,'RouteCollection'을위한 바인딩이 있음을 알았습니다. 간단한 'RegisterRoutes (Kernel.Get ());'를 내 init 메소드에 추가하면 문제가 해결되었습니다. 감사! –