9

나는 structureMap를 사용하는 기존 프로젝트에 webApi.HelpPage 지역 및 뷰를 추가하려면 여기의 지시에 따라 -하지만/도움말 URL에 액세스 할 때 :StructureMap되는 예외 webApi 프로젝트에 WebApi.HelpPage를 추가 한 후

StructureMap Exception Code: 202 No Default Instance defined for PluginFamily System.Web.Http.HttpRouteCollection, System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

그래서 나는 structureMap의 구성에 뭔가를 누락 :

ObjectFactory.Configure(x => x.Scan(scan => 
      { 
       scan.TheCallingAssembly(); 
       scan.AssembliesFromApplicationBaseDirectory(); 
       scan.AddAllTypesOf<IHttpModule>(); 
       scan.WithDefaultConventions(); 
      })); 

는 사람이 올바른 방향으로 structureMap 초보자 포인트?

+0

이 버그는 github에 너무 DEVS를 stuctureMap보고되었다 - hoepfully가 수정 업데이트됩니다 : 은 https : // github.com/webadvanced/Structuremap.MVC4/issues/6 – nathfy

답변

8

내가 성공, 내 레지스트리에 다음과 같은 사용 :

For<HelpController>().Use(ctx => new HelpController()); 
+0

그 덕분에 - 우리는 이제 api 문서 및 테스트를 위해 http://swagger.io/를 사용하도록 이동했습니다.하지만이 도움이 다른 사람들에게 도움이되기를 바랍니다. – nathfy

+0

감사합니다. StructureMap의 초보자이기 때문에 게시물이 많이 도움이되었습니다. –

4

어셈블리 스캐너에서 System.Web. * 어셈블리를 건너 뜁니다.

ObjectFactory.Configure(x => x.Scan(scan => 
    { 
     scan.TheCallingAssembly(); 
     scan.AssembliesFromApplicationBaseDirectory(assembly => !assembly.FullName.StartsWith("System.Web")); 
     scan.AddAllTypesOf<IHttpModule>(); 
     scan.WithDefaultConventions(); 
    })); 

이것은 버그이며 우리는 둘 다 StructureMap의 Github에 댓글을 달았습니다. 나는 우리가 미래에 이것을 필요로하지 않을 것이기를 희망하지만, 지금은 빠른 수정입니다.

+0

이것은 매력처럼 작동했습니다. 내가 가진 유일한 제안은 제외 된 어셈블리를 별도의 호출로 분리하는 것입니다 (많은 어셈블리가 제외 된 경우를 대비하여) - scan.ExcludeNamespace ("System.Web"); – mirezus

+0

이것은 나를 위해 전혀 작동하지 않습니다. Seeking27의 제안을 사용해야합니다. – Echiban

+1

기본 어셈블리 이름을 가진 MVC 4 웹 응용 프로그램 용입니다. 다른 것을 사용하고 있다면 (MVC 5 또는 MVC 6), 당신은 곰팡이가 다를 수 있습니다. –

6

나는 또한 동일한 문제가있었습니다. 문제가되는 것으로 밝혀진 것은 HelpController에 두 개의 생성자가 있다는 것입니다. 하나는 HttpConfiguration을 사용하고 다른 하나는 GlobalConfiguration을 사용합니다. 나는 StructureMap이 Http 생성자를 private으로 만들어서 GlobalConfiguration constuctor를 호출하도록했다.

public HelpController() 
     : this(GlobalConfiguration.Configuration) 
    { 
    } 

    private HelpController(HttpConfiguration config) 
    { 
     Configuration = config; 
    } 

트릭을 수행하는 것으로 보입니다. structuremap 3.X에서