在启用LegacyCasmodel的情况下,在GAC中访问我的程序集失败

时间:2018-09-10 09:23:13

标签: c# asp.net .net-assembly code-access-security full-trust

我有一个使用C#开发的助手程序集dll,我在交易过程中从Web应用程序调用了它。

我需要我的Web应用程序得到完全信任,并想在其中启用legacyCasModel,因此我在应用程序的web.config中添加了以下几行

<trust level="Full" legacyCasModel="true" />

C#dll正在从GAC加载,没有任何问题,我能够调用程序集的功能,直到我在web.config中添加此信任标记为止。

添加legacyCasModel =“ true”后,对Web应用程序的请求失败,事件日志中以

的形式抛出异常
  

无法初始化AppDomain:/ LM / W3SVC / 2 / ROOT

     

异常:System.IO.FileLoadException

     

消息:加载此程序集将产生不同的授权集   从其他实例。 (来自HRESULT的异常:0x80131401)

     

StackTrace:位于   System.Web.Configuration.HttpConfigurationSystem.EnsureInit(IConfigMapPath   configMapPath,布尔型listenToFileChanges,布尔型initComplete)
  在System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost,appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParametershostingParameters,   PolicyLevel policyLevel,异常为appDomainCreationException),位于   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost,appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParametershostingParameters,   PolicyLevel policyLevel),位于   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost,appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParametershostingParameters,   PolicyLevel policyLevel),位于   System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(字符串   appId,IApplicationHost,appHost,HostingEnvironmentParameters   hostingParameters)   System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(字符串   appId,IApplicationHost,appHost,HostingEnvironmentParameters   hostingParameters)

如果我注释掉了程序集中的函数体而只是注释了return;控件,则不会发生异常。如果程序集中的任何功能都具有.Net Framework类(如System.Web.HttpContext),则会引发异常。

如何在不禁用legacyCasModel的情况下解决此错误?我应该为程序集实现任何安全性属性吗?

注意:我的程序集已安装在GAC中,并且已编译.Net 3.5。它用digicert进行了数字签名,但是证据中没有x509Certificate(这很重要吗?

0 个答案:

没有答案