c# - 让 NHibernate 在中等信任的共享主机上工作

标签 c# asp.net nhibernate shared-hosting medium-trust

一个 friend 在他的计算机上本地使用 NHibernate 制作了一个 ASP.NET 网站,在我从 SVN 存储库下载它之后,在我的计算机上也使用了它。但是,我们正在尝试将其托管在具有中等信任级别的共享托管环境中。服务器给出以下异常(部分堆栈跟踪):

[SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
   System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
   System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) +31
   System.Security.CodeAccessPermission.Demand() +46
   System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(Type owner, StackCrawlMark& stackMark, Boolean skipVisibility) +166
   System.Reflection.Emit.DynamicMethod..ctor(String name, Type returnType, Type[] parameterTypes, Type owner, Boolean skipVisibility) +40
   NHibernate.Bytecode.Lightweight.ReflectionOptimizer.CreateDynamicMethod(Type returnType, Type[] argumentTypes) in ReflectionOptimizer.cs:104

与反射有关。在 NHforge.org 上是一个 guide告诉关闭反射优化器。我找不到如何去做,但我怀疑您根本无法在 VS2010 的 ASP.NET 网站 中完成。 SO 上的其他人建议首先将其转换为 ASP.NET Web 应用程序,这样您可以更好地控制程序集引用。

问题是网站(这是一个学校项目)的截止日期已经是下周五了。我们还没有学过任何类型的 ORM,但我们希望它能为我们节省很多时间。我想提出 3 个问题:

  1. 考虑到异常(exception)情况以及它是具有中等信任度的共享主机这一事实,我们能否让 NHibernate 在相当长的时间内正常工作?

  2. 我们如何将我们的网站转换为网络应用程序?

  3. 我们需要采取哪些进一步的步骤?

我知道一次不能问多个问题,但这些问题非常相关,我觉得所有问题都有一个答案。

感谢任何帮助。如果您需要完整的堆栈跟踪,我会发布它。

最佳答案

查看此 blog post还有this one .我需要在使用 Medium Trust 的 Rackspace 云上使用 NH3.2。您需要做的就是运行此 Nuget 命令,它应该会下载正确的程序集(您可能需要先删除现有的 NH dll)。

PM> Install-Package NHibernate.DependencyInjection

可以找到的nuget包here .

然后将此代码放入您的应用中:-

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

看起来 Randy 已将其更新为适用于 NH3.3。

关于c# - 让 NHibernate 在中等信任的共享主机上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10418941/

相关文章:

Asp.net mvc razor - 将数据发送到主布局

.NET 4.0 解决方案中的 NHibernate 1.2

c# - Refit Net core AddRefitClient 读取响应头

c# - ASP.NET - 从 XML 文件读取本地化字符串的最佳做法是什么?

javascript - 从 javascript/jquery 读取文本框值

c# - 基类中的审计信息

c# - 扩展 NHibernate DriverConnectionProvider 类

c# - 如何使用 C# 中的字符串从具有数据源集的列表框中删除项目

c# - IEnumerable .Min 如何处理 Nullable 类型?

javascript - 如何替换文本框中的前 3 个字符?