2011-06-19 42 views
3

我打電話給ModelMetadataProviders.Current.GetMetadataForProperties以獲取WPF應用程序中的ModelMetadata列表。 此調用執行正常,我得到IEnumerable <>作爲回報。 在代碼行,我試圖迭代這個,我得到System.MethodAccessException。System.MethodAccessException,CAS和Visual Studio調試程序

有趣的是,它只發生在我用F5進行調試時發生。 如果我用Ctrl + F5運行代碼,那麼我不會得到這個異常,代碼工作正常。 如果我從Windows資源管理器運行exe,它也運行良好。

當然,我錯過了一些東西。可能是,System.Web.Mvc無法從WPF應用程序中使用? (爲什麼) 是否有關於visual studio調試器的東西?

任何幫助將不勝感激。

這裏是整個異常:

嘗試通過安全透明方法 'System.Web.Mvc.TypeDescriptorHelper.Get(System.Type的)' 訪問安全臨界方法 「System.ComponentModel.DataAnnotations .AssociatedMetadataTypeTypeDescriptionProvider..ctor(System.Type)' 失敗。

大會 'System.ComponentModel.DataAnnotations, 版本= 4.0.0.0,文化=中性 公鑰= 31bf3856ad364e35' 是 有條件APTCA組件,其是 在當前的AppDomain未啓用。 要啓用此組件由 部分信任或安全性透明 碼被使用,請加組件名稱 「System.ComponentModel.DataAnnotations, 公鑰= 0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9」 到所述 PartialTrustVisibleAssemblies列表 創建應用程序域時。

+0

謝謝,Jehof格式化... – isntn

回答

2

感謝您的信息,列維。

由於我無法使用DataAnnotations因爲上述錯誤,我做了自己的一些編碼 - 這涉及到反射。我遇到問題:-(調用GetCustomAttributes時使用CompareAttribute。

但是,然後我找到了解決方法。

看來這個問題是與Visual Studio宿主進程。

如果我禁用visual studio託管過程,兩個問題都會消失!

6

這是System.ComponentModel.DataAnnotations.dll中的一個已知錯誤,它將在下一個.NET Framework版本中修復。簡而言之,DataAnnotations程序集標記爲有條件的APTCA,因爲它最初僅供ASP.NET應用程序使用。程序集變得更加有用,因此它可以在ASP.NET之外使用,但是我們忘記從程序集中刪除條件APTCA標誌。這會導致透明DLL(如System.Web.Mvc.dll)在特定AppDomain中的ASP.NET應用程序之外訪問此程序集時失敗,例如由VS調試進程實例化的程序集。

要回答您的其他問題:System.Web.Mvc.dll從未經過測試,不能在ASP.NET應用程序之外使用。它在System.Web.dll和其他相關程序集中有幾個鉤子,所以它在某些時候會爆炸並不令人驚訝。