【问题标题】:ReflectionPermission problems when using Ninject 2.2, Fluent NHibernate in a Medium Trust environment在中等信任环境中使用 Ninject 2.2、Fluent NHibernate 时的 ReflectionPermission 问题
【发布时间】:2012-09-12 11:49:18
【问题描述】:

我正在使用 (来自 Nuget 包) Ninject 2.2 和 Fluent NHibernate 1.3(引擎盖下的 NHibernate v3.2),但我遇到了难题。

我正在使用 Fluent 配置来指向我的数据库、映射等:

var fluentConfig = Fluently.Configure()
    (MsSqlConfiguration.MsSql2008.DoNot.UseReflectionOptimizer()
    .ConnectionString(c => c.FromConnectionStringWithKey("ExampleDB")))
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ExampleMap>()
    .Conventions.Add(FluentNHibernate.Conventions.Helpers.DefaultLazy.Never()))
    .ExposeConfiguration(x => x
                            .SetProperty("current_session_context_class", "web"))
    .ExposeConfiguration(BuildSchema);

代码可以在我的本地机器上进行美化,直到我将 设置为镜像我的托管服务提供商,然后它开始出错。

问题行是此代码块中的第二行

Bind<Configuration>().ToConstant(fluentConfig.BuildConfiguration());
Bind<ISessionFactory>().ToConstant(fluentConfig.BuildSessionFactory());
Bind<ISession>().ToMethod(x => GetRequestSession(x));

我收到的异常: “...请求'System.Security.Permissions.ReflectionPermission....类型的权限失败”

有人有什么建议吗? 到目前为止,我的调查除了基于旧版本的 Ninject 和 NHibernate 的过时信息或涉及反编译 X 以脱离 Y 的解决方案之外什么都没有发现……我宁愿不这样做!

【问题讨论】:

  • 从提出这个问题到现在我已经转向支持完全信任的托管服务提供商。不过,我仍然想知道是否有办法在中等信任环境中拥有 FNHB。

标签: asp.net-mvc fluent-nhibernate ninject-2 medium-trust reflectionpermission


【解决方案1】:

使用中等信任版本而不是来自 NuGet 的版本:https://github.com/ninject/ninject/downloads

【讨论】:

  • 这绝对有帮助,谢谢。更换 Ninject dll 允许 Ninject 在中等信任下正确运行。 (Fluent)NHibernate 然而仍然抛出同样的异常。我已经完成了一半!
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
相关资源
最近更新 更多