web-dev-qa-db-ja.com

中程度の信頼のために開発しようとすることは失われた原因ですか?

Entity Framework Code Firstと、依存性注入用のUnityを使用した新しいMVCアプリの開発を開始しました。 EF5とUnityを使用したのは、これらがMedium Trustで動作するはずだと思ったためです。ただし、<trust level="Medium" />私のタグweb.config、Reflection Permission例外の取得を開始しました。

System.Data.SqlClient ADO.netスタッフ中信頼で常に問題が発生します。自動マッパー:失敗します。 NHibernate:失敗しました。 MySQL:失敗します。 EF5コードファースト:失敗。 IOC:失敗しました。

夢想を追いかけているだけですか? Medium Trustで実行される最新のテクノロジーを使用して、適切に設計されたテスト可能なWebアプリケーションを実現することは可能ですか?

VM /仮想サーバー/クラウドコンピューティング(およびアプリケーションプールを完全信頼に設定するいくつかの共有ホストでさえ)の時代に、Medium Trustの開発に努力する価値があると感じた人はいますか?

43
Sam

ASP.NETチームの公式の立場は、Medium Trustは廃止されているということです。これはいくつかのことを意味します。

  • 「修正できない」と報告された中程度の信頼関連のバグはすべて自動的に解決されます。
  • ホスティング事業者に対して、Medium Trustから移行し、代わりに適切なOSレベルの分離を使用するようにガイダンスを提供しました( http://support.Microsoft.com/kb/2698981 )。
  • 開発中のフレームワーク(MVC、WebAPI、SignalRなど)からMedium Trustサポートを削除しています。今後、これらのフレームワーク上に構築されたアプリケーションには完全信頼が必要になります。

ここで、上記の「中程度の信頼」という用語は、組み込みの信頼レベル(最小、低、中、高)または任意のカスタム信頼レベルの使用を含む、ASP.NETのすべての非完全信頼構成を指します。

2015年5月26日編集:.NET Frameworkは全体として部分的な信頼を非推奨にしているため、セキュリティの境界としてこれに依存しないことをお勧めします。 MSDNから

.NET Frameworkのコードアクセスセキュリティは、部分的に信頼されたコード、特に不明なコードのセキュリティ境界として使用しないでください。代替のセキュリティ対策を講じることなく、原因不明のコードを読み込んで実行することは避けてください。

68
Levi

一般に、Reflectionを深く必要とするすべてのものは、Medium Trustでは実行できません

あなたの場合:

Automapper:リフレクションを使用して、一致するプロパティとメモリストリームを検出し、それらを複製します(実際には、ある程度の制限はありますが、中程度の信頼で動作するバージョンがあります)

NHIbernate:NHの遅延読み込みがプロキシによって実装されているため、反射放出を使用して遅延読み込みを許可します(これを回避するには、遅延読み込みを無効にするか、プロキシの事前作成に役立つユーティリティであるNHibernate ProxyGeneratorを使用します)

Nhibernate ProxyGenerator

EF:実際、EFとMedium Trustで大きな問題は見つかりませんでした。..オブジェクトを関連付けまたはコレクションでシリアル化しないでください

IoC:IoCはリフレクションのキラーアプリケーションです:)中信頼で動作するAutoFacを試すことができます

AutoFac

一般的に、中程度の信頼は大きな制限です...しかし、それはあなたが取り組んでいるプロジェクトの種類に依存します。 Arvixeのような完全信頼ホスティングを使用することも検討してください

お役に立てれば

8
Simone Belia