2017-12-03 15 views
1

모듈성을 위해 다른 어셈블리에 컨트롤러를 만들었습니다. 각 어셈블리는 전체 시스템의 경계 컨텍스트 (모듈, 하위 시스템, 부서 등)를 나타냅니다.ASP.NET Core MVC 2.0의 다른 어셈블리에서 컨트롤러를 사용하는 방법은 무엇입니까?

각 모듈의 컨트롤러는 다른 모듈에 대해 알지 못하는 사람이 개발했으며, 중앙 오케스트레이터는 하나의 단일 응용 프로그램에서 모든 모듈을 다루려고합니다.

그래서이 모듈에는 school이 있으며, 그 안에 TeacherController이 있습니다. 그것의 출력은 Contoso.School.UserService.dll입니다.

주 오케스트레이터는 Education이며 Contoso.School.UserService.dll을 참조합니다.

program.cs은 다음과 같습니다 교사 컨트롤러의 노선 아직

public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args).UseKestrel() 
      .UseStartup<Startup>() 
      .Build(); 

, 나는 404이 어떻게 다른 어셈블리에서 컨트롤러를 사용하는거야? 다음 호출 할 수있는 Startup 클래스의 ConfigureServices 방법 내부

답변

4

: assemblyContoso.School.UserService.dll를 나타내는 인스턴스 Assembly

services.AddMvc().AddApplicationPart(assembly).AddControllersAsServices(); 

.

당신은 그것을로드 할 수 있습니다 모든 포함 된 유형 또는이처럼 점점 :

var assembly = Assembly.Load("Contoso.School.UserService"); 
+0

무엇 nuget 패키지 나는'AddApplicationPart'을 위해 필요합니까? –

+0

'Microsoft.AspNetCore.Mvc.Core.dll' 어셈블리에 있으며'Microsoft.Extensions.DependencyInjection' 네임 스페이스가 있습니다 –

+0

자세한 정보 및 소스 코드 샘플을 보려면 문서를 참조하십시오 - https://docs.microsoft.com/en -us/aspnet/core/mvc/advanced/app-parts –