【问题标题】:NHibernate 3.3.3 Medium Trust simple site not working out of the boxNHibernate 3.3.3 Medium Trust 简单站点无法开箱即用
【发布时间】:2013-05-11 20:53:49
【问题描述】:

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

  1. 在面向 .Net 4.0 的 VS2012 中创建新网站。
  2. 通过 NuGet 添加 FluentNHibernate。还要添加 NHibernate.DependencyInjection 包。还安装 NHibernate 3.3.3。
  3. 配置 web.config 以在中等信任下运行。
  4. 创建简单的会话工厂。连接到 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


    【解决方案1】:

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

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

    【讨论】:

    • 这似乎是这样,基本上是我得出的结论。现在我知道有很多关于 NHibernate 和 Medium Trust 的旧文档(AllowTrustedCallers 重新编译等),包括很多说“它只是工作!”,但我找不到任何相对较新的内容关于上面的简单示例。任何其他在 Medium Trust 中开发的 VS2012 开发人员都会遇到同样的问题。这特别适用于 NHibernate.DependencyInjection,在您查看源代码之前,它没有提及所需的额外权限。
    • 总之 - 我相信你,但有什么可以支持这一点的吗?
    • 我认为已经过了足够的时间来接受这个答案。也许如果情况发生变化,有人会发布更新。
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2013-05-26
    • 2015-06-25
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2017-04-05
    相关资源
    最近更新 更多