2011-04-23 2 views
5

ASP.NET MVC 2 (현재 Visual Studio 2008 사용)로 시간을 보내고 있으며 이제 Ninject 2.2 및 그것의 MVC 통합.ASP.NET MVC 2, Ninject 2.2 및이 객체에 대해 정의 된 매개 변수없는 생성자 없음

https://github.com/downloads/ninject/ninject/Ninject-2.2.0.0-release-net-3.5.zip
https://github.com/downloads/ninject/ninject.web.mvc/Ninject.Web.Mvc2-2.2.0.0-release-net-3.5.zip

을 그리고 내 MVC 2 프로젝트에서 그들을 참조 : 나는 다음과 같은 위치에서 Ninject에 2.2 Ninject.Web.Mvc을 다운로드 한. 내 Global.asax.cs 파일 (거의 Ninject.Web.Mvc README의 말씀)과 같습니다

using System; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Routing; 
using Ninject.Web.Mvc; 
using Ninject; 

namespace Mvc2 { 
    public class MvcApplication : NinjectHttpApplication { 
     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 
      ); 
     } 

     protected override void OnApplicationStarted() { 
      AreaRegistration.RegisterAllAreas(); 
      RegisterRoutes(RouteTable.Routes); 
     } 

     protected override IKernel CreateKernel() { 
      var kernel = new StandardKernel(); 

      kernel.Bind<IFoo>().To<Foo>(); 

      return kernel; 
     } 
    } 
} 

그리고이처럼 보이는 홈 컨트롤러 : 이제 모든 시간을

using System; 
using System.Web; 
using System.Web.Mvc; 

namespace Mvc2.Controllers { 
    public class HomeController : Controller { 
     private readonly IFoo foo; 

     public HomeController(IFoo foo) { 
      this.foo = foo; 
     } 

     public ActionResult Index() { 
      ViewData["Message"] = "Welcome to ASP.NET MVC!"; 

      return View(); 
     } 
    } 
} 

을 프로젝트를 실행하고 '/'을 방문하면 "이 객체에 대해 정의 된 매개 변수없는 생성자가 없습니다."라는 메시지가 표시된 죽음의 노란색 화면이 나타납니다. Ninject가 내 Foo 서비스를 해결하지 않고 HomeController에 주입하는 것 같습니다. 나는 정말로 명백한 무엇인가 놓치고 있다고 상상한다. 그러나 나는 단지 그것을 보지 않고있다.

Ninject 속성을 사용하지 않고 Ninject에 HomeController에 Foo를 주입하려면 어떻게해야합니까?

+0

행복한 부활절 남자 :) – systempuntoout

+0

너무 행복한 부활절, @ 시스템! –

+0

7 월 4 일의 행복한 날. 이 질문과 답변을 게시 해 주셔서 감사합니다. – anon

답변

4

Me : IFoo 서비스 구현에 대한 정보를 좀 더 제공 할 수 있습니까? 모든 종속성이 만족 스럽습니까?

나 자신 : 아니요, 그렇지 않습니다. 나는 의존성을 묶지 않았다. 소년, 그 오류 메시지와 스택 추적 오해의 소지가 있습니다!


그래서 내 실수는 내가 IFoo 구현의 종속성 중 하나를 결합하지 않았다이었다 그래서 Ninject에 조용히 실패와 메리 길을 계속했습니다. 사소한 설정에서 벗어나면 정말 이상한 행동으로 이어질 수 있기 때문에 정말 불행합니다. 내 다음 질문은 가능한 한 빨리 Ninject가 실패하고 무엇이 잘못 되었는가에 대한 좋은 메시지를 제공 할 수 있어야한다고 생각합니다. 하지만 지금은 적어도 그걸로 얻을 수 있습니다.

관련 문제