2011-06-19 11 views
3

CASおよびVisual Studioデバッガが細かい実行され、私はリターンで> < IEnumerableを取得します。 これを繰り返し実行しようとするコード行で、System.MethodAccessExceptionが返されます。System.MethodAccessException、私は、Visual Studio 2010 この呼び出しでWPFアプリケーションでModelMetadataのリストを取得するためにModelMetadataProviders.Current.GetMetadataForPropertiesを呼び出しています

面白いことは、私がF5でデバッグしているときだけ起こることです。 Ctrl + F5でコードを実行すると、この例外は発生せず、コードは正常に動作します。 Windowsエクスプローラからexeを実行すると、正常に実行されます。

確かに、私は何かを紛失しています。 System.Web.MvcはWPFアプリケーションから使用できないことがありますか? (理由) ビジュアルスタジオデバッガには何かありますか?

ご協力いただければ幸いです。ここで

は、全体の例外です:セキュリティ上重要なメソッド 「System.ComponentModel.DataAnnotationsにアクセスするためのセキュリティ透明法による

試み 'System.Web.Mvc.TypeDescriptorHelper.Get(のSystem.Type') .AssociatedMetadataTypeTypeDescriptionProvider..ctor(System.Type) ' が失敗しました。

アセンブリ 'System.ComponentModel.DataAnnotations、 バージョン= 4.0.0.0、文化=中立は、 なPublicKeyToken = 31bf3856ad364e35' 現在のAppDomainで有効になっていない 条件付きAPTCAアセンブリです。 AppDomainを作成するときに PartialTrustVisibleAssembliesリストに を 「を、System.ComponentModel.DataAnnotations のPublicKey = 0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9」、アセンブリ名を追加してください 部分信頼やセキュリティ透明 コードによって使用されるように、このアセンブリを有効にするには 。

+0

Jehofさん、フォーマットしていただきありがとうございます... – isntn

答えて

2

おかげさまで、Levi。

私はこのバグのためにDataAnnotationsを使用できませんでしたので、私は自分自身のコーディングを行いました。これにはリフレクションが含まれています。そして私は問題に直面しました:-(GetCustomAttributesを呼び出すときCompareAttributeで)。

しかし、回避策が見つかりました。

Visual Studioホスティングプロセスで問題が発生しているようです。

ビジュアルスタジオのホスティングプロセスを無効にすると、両方の問題が解決します。

6

これは、.NET Frameworkの次のリリースで修正される予定のSystem.ComponentModel.DataAnnotations.dllの既知のバグです。簡単に言えば、DataAnnotationsアセンブリは元々はASP.NETアプリケーションのみで使用されるため、条件付きのAPTCAとしてマークされています。アセンブリはASP.NETの外部で使用できるようになりましたが、アセンブリから条件付きAPTCAフラグを削除するのを忘れてしまいました。これにより、特定のAppDomains(VSデバッグプロセスによってインスタンス化されたものなど)のASP.NETアプリケーションの外部でこのアセンブリにアクセスすると、透過的なDLL(System.Web.Mvc.dllなど)が失敗することがあります。

他の質問に答えるには:System.Web.Mvc.dllは、ASP.NETアプリケーションの外部で使用することは決してテストされていません。 System.Web.dllやその他の関連するアセンブリにはいくつかのフックがあるため、ある時点で爆発することはそれほど驚くことではありません。

関連する問題