关于 asp.net:NHibernate 3.3.3 Medium Trust 简单站点无法开箱即用

NHibernate 3.3.3 Medium Trust simple site not working out of the box

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

  • 在 VS2012 中创建针对 .Net 4.0 的新网站。
  • 通过 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 不提供的权限。


    IIRC,NH3 不会在默认的 Medium Trust 环境中运行。

    它可以在某些共享托管服务提供商使用的自定义"中等信任"配置中运行。您需要使用您要定位的特定策略进行测试。