【发布时间】:2012-05-12 05:36:47
【问题描述】:
一位朋友在他的计算机上使用 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 个问题:
鉴于例外情况以及它是具有中等信任度的共享主机这一事实,我们能否让 NHibernate 在相当长的时间内正常工作?
我们如何将我们的网站转换为网络应用程序?
我们还需要采取哪些进一步的步骤?
我知道实际上不允许一次问多个问题,但这些问题非常相关,我觉得所有问题都有一个答案。
感谢任何帮助。如果您需要完整的堆栈跟踪,我会发布它。
【问题讨论】:
标签: c# asp.net nhibernate shared-hosting medium-trust