0

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

  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 不提供的权限。

4

1 回答 1

0

IIRC,NH3不会在默认的中等信任环境中运行。

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

于 2013-05-11T22:53:17.363 回答