막혔습니다. 나는 wcf web api p6 Ninject working with WCF Web API Preview 5에 대해 여기에 설명 된 방법을 사용하고 있었지만, 베타의 mvc 구현과는 상당히 다릅니다. 좋은 기사 여기에 http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver 자신의 사용자 지정 의존성 해결자를 구축하는 방법에 대해 이야기하지만, 나는 내 MVC 컨트롤러를 위해 사용하고있는 동일한 구현을 사용하고 싶습니다. Ninject. 기사의 IoC Unity 예제를 기반으로 몇 가지 사항을 시도했지만 아무 것도 아직 결정되지 않았습니다. 나를 올바른 방향으로 향하게 도와 주면 도움이 될 것입니다. 나 혼자서 계속 파고 갈거야. 미리 감사드립니다!Asp.NET 웹 API Beta ApiController에서 Ninject 사용
여기 내가있는 곳입니다. 코드를 부트 스트랩하기 위해 WebActivator를 사용하고 있었지만 방금 방정식에서 한 가지 더 꺼내기 위해 Application_Start()에 놓았습니다.
protected void Application_Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
그리고 다음과 같은 오류를 수신하고 있습니다 :
Ninject.Web.Mvc.NinjectDependencyResolver이 Microsoft.Practices.ServiceLocation.IServiceLocator을 구현 나타나지 않는 유형입니다.
매개 변수 이름 : commonServiceLocator
이
은 아마도이 솔루션을 찾을 수/더 우아한 방법이 될 것입니다하지만 지금은 나를 위해 노력하고 있습니다. 또한 여기에 사용자 지정 메시지 처리기를 추가하고 있습니다.
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart.ApiBootstrapper), "Start")]
namespace MyApp.AppStart
{
public class ApiBootstrapper
{
public static void Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
var resolver = new NinjectDependencyResolver(kernel);
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(resolver.GetService, resolver.GetServices);
GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiAuthHandler());
}
}
}
이 상당히 좋은 솔루션입니다 : http://haacked.com/archive/2012/03/11/itrsquos- the-little-things-about-asp-net-mvc-4.aspx –
도 컨트롤러의 두 가지 유형에 대해 동일한 바인딩을 사용하려는 경우 아래 @Remo Gloor의 패키지를 체크 아웃하십시오. github에서 찾을 수 있으며 Nuget에서 설치할 수 있습니다. –