45

私は、依存性注入のために Entity Framework コード ファーストと Unity を使用して、新しい MVC アプリの開発を開始しました。EF5 と Unity を使用したのは、中程度の信頼で動作するはずだと思ったからです。<trust level="Medium" />ただし、 にタグを投げると、web.configReflection Permission 例外が発生し始めました。

System.Data.SqlClientADO.netのような組み込みのものを使用する以上のことをするときはいつでも、中程度の信頼で常に問題に遭遇するようです. 自動マッパー: 失敗。Hibernate: 失敗します。MySQL: 失敗。EF5 コードファースト: 失敗。IOC: 失敗。

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

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

4

2 に答える 2

69

ASP.NET チームの公式の立場は、中程度の信頼は時代遅れであるというものです。これはいくつかのことを意味します:

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

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

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

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

于 2013-06-20T15:57:23.423 に答える
8

一般に、深い方法でリフレクションを必要とするものはすべて、中程度の信頼では実行できません

あなたの場合:

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

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

Nhibernate ProxyGenerator

EF: 実際、私は EF と Medium Trust に関する大きな問題を見つけられませんでした....関連付けやコレクションでオブジェクトをシリアル化しないことです

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

オートファク

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

お役に立てれば

于 2013-06-05T17:37:11.277 に答える