NHibernate 3.3.3中等信任简单的网站不开箱即用

时间:2013-05-11 20:53:49

标签: asp.net nhibernate dependency-injection

我已经创建了一个简单的裸网站,NHibernate在Medium Trust下运行,尽管我已经做过所有研究,说它应该可行但我无法让最简单的示例工作。这是我的步骤

  1. 在VS2012中创建面向.Net 4.0的新网站。
  2. 通过NuGet添加FluentNHibernate。还要添加NHibernate.DependencyInjection包。还安装了NHibernate 3.3.3。
  3. 将web.config配置为在Medium Trust中运行。
  4. 创建简单的会话工厂。连接到MSSQL数据库。使用CurrentSessionContext(typeof(ManagedWebSessionContext).FullName)
  5. 此时,每个人似乎都建议您在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不能提供的许可。

1 个答案:

答案 0 :(得分:0)

IIRC,NH3将在默认的中型信任环境中运行。

它可以在某些共享主机提供商使用的自定义“中等信任”配置中运行。您需要使用您要定位的具体政策进行测试。