2010-07-16 3 views
2

내가 ASP.NET MVC 응용 프로그램 내에서 MEF DirectoryCatalog에 일부 DLL의의를로드하려고 :System.Security.Permissions.FileIOPermission DLL의

var catalog = new DirectoryCatalog(HttpRuntime.BinDirectory, "Toptable.Mobile.*.dll"); 

나는 카시니를 통해 응용 프로그램을 실행하면 응용 프로그램에 대한

[SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.] 
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0 
    System.Security.CodeAccessPermission.Demand() +54 
    System.IO.Path.GetFullPath(String path) +193 
    System.ComponentModel.Composition.Hosting.DirectoryCatalog.GetFullPath(String path) +267 
    System.ComponentModel.Composition.Hosting.DirectoryCatalog.Initialize(String path, String searchPattern) +144 
    System.ComponentModel.Composition.Hosting.DirectoryCatalog..ctor(String path, String searchPattern) +166 
    Toptable.Mobile.MvcApplication.Application_Start() in C:\Dev\Toptable\Toptable.Mobile\Toptable.Mobile.Web\Global.asax.cs:74 

닷넷의 신뢰 수준을 "전체"사이트에 대한 전 세계적으로 모두 설정 : 나는 다음과 같은 예외가 얻을 (7) IIS에서 호스팅 할 때 웹 서버 (예 : F5)는 모든하지만 잘 실행 Web.config (system.web/trust)의 신뢰 수준을 전체로 설정했습니다. 무엇이 그것을 일으킬 수 있는지에 대한 아이디어가 부족합니다. 어떤 제안?

+0

응용 프로그램이 완전히 신뢰하지 않습니다. FileIOPermission이 부여되지 않았기 때문에 폴더 보안 문제가 될 수 없습니다. – bleevo

답변

0

확실한 경우 완전히 신뢰하는 사용자가 경로/권한 오류 일 가능성이 높습니다. 그 이후의 경로에 접근 할 수 있습니까?

+0

모두 예 (예 :( –

0

예외로 인해 실제로 완전히 신뢰하지 않는 것처럼 보입니다. AppDomain.IsFullyTrusted 속성을 확인하십시오. 그렇다면 ASP.NET이 IIS에서 권한이 축소 된 OS 사용자로 실행 중이며 GetFullPath를 호출 할 수있는 권한이없는 경우 일 수 있습니다. 이 문제를 해결하려면 디렉터리를 직접 검사하고 각 DLL에 대한 AssemblyCatalog를 만들고 모든 AssemblyCatalog를 AggregateCatalog에 추가하십시오.