작업중인 웹 사이트의 모듈/플러그인 시스템을 작성하려고합니다. 전체 목표는 다음과 같습니다.ASP.Net MVC : AppPool 다시 시작/다시 사용하지 않고 어셈블리 (컨트롤러)를 동적으로로드하는 방법
- 새 플러그인을 추가 할 때마다 기본 웹 사이트를 다시 컴파일 할 필요가 없다는 것입니다.
- 기본적으로 루트, 컨트롤러 및 모듈이 종속 된 다른 어셈블리 (Entity Framework 등) 집합을 추가하는 폴더 집합에 DLL 및 CSHTML 파일을 덤프 할 수 있습니다.
- 플러그인 파일을 "임베디드 리소스"- 특히보기로 표시하지 않으려면.
- IIS 응용 프로그램 풀을 재시작/재사용하거나 앱 도메인을 언로드하지 않고도이 모듈/플러그인을 추가 및 제거 할 수 있습니다.
움브라코의 예를 따르면서 1-3 번 일했습니다. 기본적으로 PreApplicationStartMethod
특성을 가진 메서드를 표시하고 그 안에 DLL 복사를 섀도 잉하고 사용자 지정 ViewEngine을 사용하여 모듈의 CSHTML 파일을 찾습니다. 내 웹 사이트가 처음 시작되면 모듈의 컨트롤러와 뷰가 작동하고 어셈블리가로드됩니다. 만세! 이 부분 # 4를 시도하는 시간을 왔을 때 BuildManager.AddReferencedAssembly()
를 호출 할 때
그러나,이 오류가 무엇입니까 :
이 메서드는 응용 프로그램의 사전 시작 초기화 단계에서 호출 할 수 있습니다. 그것은 지금까지 매우 실망 과정이었다
그 단계에서 호출하는 방법을 선언 에 PreApplicationStartMethodAttribute를 사용하여 내 직감이 오류가 막 다른 골목을 의미 하더군요. 이 경우입니까, 아니면 현명한 해결 방법이 있습니까?
안녕하세요,이 해결책이 있습니까? –