正在努力为中等信托发展一个失败的原因?

我开始开发一个新的MVC应用程序,entity framework代码优先和Unitydependency injection。 我使用了EF5和Unity,因为我认为他们应该在中等信任下工作。 但是,当我扔我的web.config <trust level="Medium" /><trust level="Medium" />标记,我开始获得reflection权限例外。

它似乎总是像我超越使用像System.Data.SqlClient ADO.net内置的东西,我总是遇到中等信任问题。 自动映射器:失败。 NHibernate:失败。 MySQL:失败。 EF5代码优先:失败。 国际奥委会:失败。

我只是追着一个梦想? 是否有可能使用现代技术在中型信托基础上实现一个架构良好,可testing的Web应用程序?

在虚拟机/虚拟服务器/云计算时代(甚至有几个共享主机将您的应用程序池设置为“完全信任”),任何人都认为为中型信任开发是值得的?

ASP.NET团队的官方位置是中等信任已经过时。 这意味着一些事情:

  • 我们正在自动解决向我们报告的所有中等信任相关的错误,“不会修复”。
  • 我们已经向托pipe服务提供了指导,他们应该从中等信任迁移,并使用适当的操作系统级别的隔离( http://support.microsoft.com/kb/2698981 )。
  • 我们正在从我们开发的框架(MVC,WebAPI,SignalR等)中移除中等信任支持。 outlook未来,基于这些框架的应用程序将需要完全信任。

在这里,上面的术语“中等信任”是指ASP.NET中所有非完全信任configuration,包括使用内置信任级别(最低,低,中,高)或任何自定义信任级别。

编辑2015年5月26日:整个.NET框架已经不推荐部分信任,build议客户不要依赖它作为安全边界。 来自MSDN :

.NET Framework中的代码访问安全性不应当用作部分受信任的代码的安全边界,特别是未知来源的代码。 我们build议不要加载和执行未知来源的代码,而不采取其他安全措施。

一般来说,所有需要深度思考的东西都不能在中等信任上运行

在你的情况下:

Automapper:使用reflection发现匹配的属性和内存stream克隆它们(有一个版本,实际上在中等信任有一定的限制)

NHIbernate:使用reflection发射来允许延迟加载因为NH中的延迟加载是通过代理实现的(为了避免这种情况,您可以禁用延迟加载或使用NHibernate代理生成器,这是一个帮助预先创build代理的实用工具)

Nhibernate ProxyGenerator

EF:其实我没有发现EF和中等信任的大问题….是不序列化对象与关联或集合

IoC:IoC是reflection的杀手应用程序:)你可以尝试在中等信任上工作的AutoFac

AutoFac

一般来说,中等信托是一个很大的限制…但这一切都取决于你正在从事什么样的项目。 也考虑使用一些像Arvixe一样的完全信任托pipe

希望这可以帮助