【发布时间】:2013-05-11 20:53:49
【问题描述】:
我创建了一个简单的裸网站,NHibernate 在 Medium Trust 下运行,尽管我所做的所有研究都说它应该可以工作,但我无法让最简单的示例工作。这是我的步骤
- 在面向 .Net 4.0 的 VS2012 中创建新网站。
- 通过 NuGet 添加 FluentNHibernate。还要添加 NHibernate.DependencyInjection 包。还安装 NHibernate 3.3.3。
- 配置 web.config 以在中等信任下运行。
- 创建简单的会话工厂。连接到 MSSQL 数据库。使用
CurrentSessionContext(typeof(ManagedWebSessionContext).FullName)
此时,似乎每个人都建议您在Application_Start中要做的就是调用
NHibernate.DependencyInjection.Initializer.RegisterBytecodeProvider();
但是当我这样做时,我得到了可怕的System.Security.Permissions.ReflectionPermission。查看 DependencyInjection 的来源,它表明应该授予 ReflectionPermission 以使注入的东西起作用。但是 Medium Trust 明确禁止 ReflectionPermission。如果我只是跳过 DependencyInjection 的内容并尝试按原样使用 NHibernate(有些人似乎认为这可能会起作用),那么我仍然会得到相同的 SecurityExceptions。
所以你看到了我所在的 catch-22。听起来我需要使用 DependencyInjection 来让 Medium Trust 工作,但 DependencyInjection 需要 Medium Trust 不提供的权限。
【问题讨论】:
标签: asp.net nhibernate dependency-injection