我有一个使用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(这很重要吗?