我有一个MVC3应用程序在Medium Trust Server中运行,该应用程序使用Castle ActiveRecord,但如果我启用Lazy Loading,则会向我显示黄色的sreen安全异常。如果我禁用Lazy Load,则一切正常。
有一种方法可以在带有Castle.Core版本3和nHibernate 3.1.0.4000的中等信任服务器中使用Lazy Loading?
对不起我的英语,谢谢。
更新:
在谷歌上的搜索中,我发现了以下选项:
预生成延迟加载代理
http://nhforge.org/wikis/howtonh/pre-generate-lazy-loading-proxies.aspx
我试过了,但看起来对Caste.Core 3和nHibernate 3.1不起作用。我错了?
看起来这个选项很长一段时间都不会收到更新,这很糟糕。
中等信任下的新冒险
http://blogs.taiga.nl/martijn/2009/06/24/new-adventures-under-medium-trust/
在Castle DynamicProxy主题中,我发现:
"解决方案很简单:DynamicProxy调用AssemblyBuilder.DefineDynamicModule,并使用生成调试符号的重载。将其更改为不再生成调试符号,使其在中等信任下工作!"
我打开了Castle.Core的源代码,在ModuleScope.cs(Castle.Core\DynamicProxy)中找到了AssemblyBuilder.DefineDynamicModule,并在调用中将其设置为false以生成调试符号。
当我遇到类似的问题时,我不得不下载castle源代码并设置AllowPartiallyTrustedCallers
,然后重新编译。
我希望它能有所帮助。