2

友人がASP.NETWebサイトをNHibernateでローカルに自分のコンピューターで動作させ、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には、ReflectionOptimiserをオフにするように指示するガイドがあります。方法がわかりませんが、VS2010のASP.NETWebサイトではまったくできないのではないかと思います。SOの他の誰かが、最初にそれをASP.NET Webアプリケーションに変換することを提案しました。そこでは、アセンブリ参照をより細かく制御できます。

問題は、ウェブサイト(学校のプロジェクト)の締め切りがすでに来週の金曜日になっていることです。私たちはどんな種類のORMも学んでいませんが、それが私たちに多くの時間を節約できることを望んでいました。私は3つの質問を提起したいと思います:

  1. 例外とそれが中程度の信頼性を持つ共有ホスティングであるという事実を考えると、NHibernateをまともな時間で動作させることができるでしょうか?

  2. WebサイトをWebアプリケーションに変換するにはどうすればよいですか?

  3. さらにどのような手順を踏む必要がありますか?

一度に複数の質問をすることは実際には許可されていないことは知っていますが、これらの質問は非常に関連性があり、すべてに1つの答えがあると感じています。

どんな助けでも大歓迎です。完全なスタックトレースが必要な場合は、投稿します。

4

1 に答える 1

1

このブログ投稿これも参照してください。MediumTrustを使用するRackspaceクラウドでNH3.2を使用する必要がありました。このNugetコマンドを実行するだけで、正しいアセンブリがダウンロードされます(既存のNH dllを最初に削除する必要がある場合があります)。

PM> Install-Package NHibernate.DependencyInjection

ここで見つけることができるnugetパッケージ。

次に、このコードをアプリに配置します:-

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

ランディがNH3.3で動作するようにこれを更新したようです。

于 2012-05-02T17:54:01.573 に答える