我正在尝试将一些dll加载到ASP.NET MVC应用程序中的MEF DirectoryCatalog中:
var catalog = new DirectoryCatalog(HttpRuntime.BinDirectory, "Toptable.Mobile.*.dll");
当我通过Cassini Web服务器(即F5)运行应用程序时,一切运行正常但是当在IIS(7)中托管时,我得到以下异常:
[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
应用程序的.NET信任级别对于站点和全局都设置为“完全”,并且我已将web.config(system.web / trust)中的信任级别设置为“完全”。没有关于可能导致它的原因的想法。有什么建议吗?
答案 0 :(得分:0)
如果您确定自己完全信任则更有可能是路径/权限错误。你确定你可以访问的路径吗?
答案 1 :(得分:0)
该异常使您看起来并没有真正完全信任。检查AppDomain.IsFullyTrusted属性以验证您的身份。如果是,那么可能是ASP.NET作为OS用户在IIS下具有降低的权限运行,并且它没有调用GetFullPath的权限。作为一种解决方法,您可以自己扫描目录,为每个DLL创建AssemblyCatalog,并将所有AssemblyCatalog添加到AggregateCatalog中。