DirectoryCatalog를 생성 할 때 MEF가 멈추는 곳에 문제가 있습니다. MEF 기능을 테스트하는 Windows Forms 응용 프로그램이 있는데 문제없이 작동합니다. 그러나 Windows 서비스에서 동일한 코드를 실행하면 다음 줄이 표시됩니다.C# MEF DirectoryCatalog를 생성 할 때 멈춤
_catalog = new DirectoryCatalog(assemblyBaseDirectory);
//Here is the full code block.
var codeBaseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
if (codeBaseDir != null) {
assemblyBaseDirectory = new Uri(codeBaseDir).AbsolutePath;
Logger.Info("Creating Directory Catalog for " + assemblyBaseDirectory);
_catalog = new DirectoryCatalog(assemblyBaseDirectory);
Logger.Info("Directory Catalog created!");
}
예외가 없습니다. 로그인을하고 두 번째 Logger.Info 라인이 호출되지 않는다는 것을 알았습니다.
는 UPDATE :
나는 내 서비스에서이 코드를 호출 할 때 내 경로가 동일하게 반환되지 않았 음을 결정했다. 디렉토리 경로의 형식을 "C :/Program % 20Files/My % 20Service"로 지정했습니다. 왜 내 win forms 애플리케이션에서이 작업을 수행하지 않았는지 잘 모르겠습니다.
서비스가 로컬 시스템 계정으로 실행됩니다. 내가 제공 한 코드를 사용하여 경로를 확인했고 코드에서 얻은 경로와 동일한 경로를 반환합니다. 그것은 내 서비스를 설치 한 경로입니다. 이견있는 사람? 감사. –
이 사이트에서 MEF 및 디렉토리 권한으로 다른 사람들의 문제를 조사한 결과, 보안 문제가있을 때 예외가 발생하는 것처럼 보입니다. –