试图为中信托开发一个失败的原因?

Sam*_*Sam 43 asp.net asp.net-mvc medium-trust

我开始开发一个新的MVC应用程序,其中实体框架代码优先,Unity用于依赖注入.我使用EF5和Unity,因为我认为他们应该在Medium Trust中工作.但是,当我把<trust level="Medium" />标记扔进我的时候web.config,我开始获得反射权限异常.

似乎每当我超越使用像System.Data.SqlClientADO.net 这样的内置东西时,我总是会遇到Medium Trust中的问题.自动映射器:失败.NHibernate:失败.MySQL:失败.EF5代码优先:失败.国际奥委会:失败.

我只是在追逐梦想吗?是否有可能使用将在Medium Trust中运行的现代技术来实现构建良好且可测试的Web应用程序?

在虚拟机/虚拟服务器/云计算时代(甚至一些将您的应用程序池设置为完全信任的共享主机),是否有人发现为中型信任开发值得付出努力?

Lev*_*evi 68

ASP.NET团队的官方立场是中信任已过时.这意味着一些事情:

  • 我们会自动将报告给我们的所有与中信任相关的错误解析为"无法修复".
  • 我们已经向托管商提供了指导,他们应该从Medium Trust迁移并使用适当的操作系统级隔离(http://support.microsoft.com/kb/2698981).
  • 我们正在从我们开发的框架(MVC,WebAPI,SignalR等)中删除Medium Trust支持.展望未来,基于这些框架构建的应用程序将需要完全信任.

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

编辑2015年5月26日: .NET Framework作为一个整体已弃用部分信任,建议客户不要将其作为安全边界.来自MSDN:

不应将.NET Framework中的代码访问安全性用作具有部分受信任代码的安全边界,尤其是源自未知的代码.我们建议不要在不采用其他安全措施的情况下加载和执行未知来源的代码.

  • 史蒂文:http://support.microsoft.com/kb/2698981是主要文章。还有其他一些,例如http://www.asp.net/aspnet/overview/web-development-best-practices/what-not-to-do-in-aspnet、-and-what-to-做代替#中等。 (2认同)

Sim*_*lia 8

一般而言,需要深入反思的所有东西都不能在Medium Trust上运行

在你的情况下:

自动映射:使用反射来发现匹配的属性和内存流来克隆它们(有一个版本,实际上在中等信任中有一些限制)

NHIbernate:使用反射发射来允许延迟加载,因为NH中的延迟加载是由代理实现的(为了避免这种情况,您可以禁用延迟加载或使用NHibernate ProxyGenerator,它是一个有助于预创建代理的实用程序)

Nhibernate ProxyGenerator

EF:实际上我没有发现EF和中等信任的大问题....是不用序列或集合序列化对象

IoC:IoC是反射的杀手应用程序:)您可以尝试使用适用于Medium Trust的AutoFac

AutoFac

一般来说,中等信任是一个很大的限制......但这一切都取决于你正在做什么样的项目.还要考虑使用像Arvixe这样的一些完全信任托管

希望这可以帮助