【问题标题】:Fluent NHibernate - Castle - godaddy - medium trustFluent NHibernate - Castle - godaddy - 中等信任度
【发布时间】:2013-07-19 10:53:08
【问题描述】:

在将我的本地测试应用程序部署到共享网络托管 (godaddy) 时,我遇到了“程序集不允许部分受信任的调用者”的问题。

我已经阅读了各种帖子和解决方案,其中最需要对我的应用进行更改的帖子和解决方案似乎是 here

现在是否有任何预编译的 dll 可供我使用,而无需重建 nhibernate,因为我无权访问 svn 或不知道如何进行操作?

【问题讨论】:

    标签: security nhibernate


    【解决方案1】:

    我假设您使用的是 NH 3.2,但如果您使用的是 Fluent NH,我无法确定。

    创建了一个package on NUGET 以满足中等信任环境的需求。 还有一个blog post 描述了如何使用这个包。

    基本上做一个包安装:-

    PM> 安装包 NHibernate.DependencyInjection

    然后使用以下代码:-

    protected void Application_Start() {
      Initializer.RegisterBytecodeProvider();
      ...
      Rest of configuration code here
    }
    

    你不需要重新编译任何东西。

    【讨论】:

    • 没有帮助:[SecurityException:请求“System.Security.Permissions.ReflectionPermission,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。] NHibernate.DependencyInjection.BytecodeProvider..ctor() +40 NHibernate.DependencyInjection.Initializer.RegisterBytecodeProvider() +40 ....Application_Start() in Global.asax.cs:59
    【解决方案2】:

    我遇到了同样的问题,并且能够使用 NHibernate.DependencyInjection 解决它。

    这些是我采取的步骤:

    1) 安装了NuGet package

    2) 实现 IEntityInjector 接口:

    public class EntityInjector : IEntityInjector
    {
        public object[] GetConstructorParameters(System.Type type)
        {
            //return null if your objects have parameterless constructors
            return null;
        }
    } 
    

    3) 在 Global.asax Application_Start 中,我注册了注入器:

    protected void Application_Start()
    {
        Initializer.RegisterBytecodeProvider(new EntityInjector());
    
        ...
    }
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2011-02-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      相关资源
      最近更新 更多