2011-11-25 83 views
14

從.NET 3.5升級某些ASP.NET代碼時,我收到了以下編譯警告錯誤: 'System.Security.Permissions.SecurityAction.RequestMinimum'已過時。如何修復「'System.Security.Permissions.SecurityAction.RequestMinimum'已過時」的編譯錯誤?

屬性具有應用在assebly水平蜜蜂:

[assembly: System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.RequestMinimum, Execution=true)] 

而且該代碼使用在P & P的Web客戶端軟件工廠,specificly的ObjectBuilder.WCSFExtensions庫。另外它的代碼提供了一些角色提供者實現。

請記住,此代碼在其他項目中用作框架代碼,因此很難確定可能存在哪些安全需求。


所以暢想DOLAR問題是:需要被用於 「System.Security.Permissions.SecurityAction」 枚舉

什麼樣的價值?

另外還有更好的方法來應用此安全屬性?

回答

13

您是否閱讀過完整的編譯器警告或訪問它包含的鏈接?除非您翻轉「傳統模式」開關,否則「裸」CLR不再限制.NET 4.0下的CAS權限,因此不會取代您的RequestMinimum使用。程序集級SecurityPermissionAttribute應該被刪除,而不是修改。

有關4.0 CAS更改的更多完整說明,請參見http://blogs.msdn.com/b/shawnfa/archive/2009/05/21/security-policy-in-the-v4-clr.aspxhttp://blogs.msdn.com/b/shawnfa/archive/2010/02/24/so-is-cas-dead-in-net-4-or-what.aspx

+0

感謝妮可,你提到的文章比MSDN文檔(這是全面的,但沒有給出明確/明顯的說法:刪除屬性)提供了更清晰的背景。我不確定刪除屬性會帶來什麼影響。最後,我選擇暫時將代碼保留爲3.5。 – Schalk

+0

程序集級RequestMinimum只是指示主機在未授予指定權限的情況下不加載程序集。由於主機不會在程序集中運行任何代碼,除非它具有執行權限,否則執行權限的RequestMinimum幾乎毫無用處。在未授予權限時,運行時行爲的唯一區別是異常的詳細信息以及何時拋出。但是,無論該屬性是否存在,您在執行程序集中的任何代碼之前都會看到異常。 –

相關問題