在DotNET4.0使用舊有的程式碼存取安全性CAS (Code Access Security)原則

在.NET 1.0/1.1~3.5 的CAS (Code Access Security) 的程式碼存取安全性強的功能相信有使用過的人都印象深刻,不過到了.NET 4.0後在CAS有很大的改變,原先的CAS的UI工具到了.NET 4.0也不復存在

在.NET 1.0/1.1~3.5 的CAS (Code Access Security) 的程式碼存取安全性強的功能相信有使用過的人都印象深刻,不過到了.NET 4.0後在CAS有很大的改變,原先的CAS的UI工具到了.NET 4.0也不復存在

image

原先筆者所使用的AppDomain裡的Load() 方法也會被判定為已過時:

image

由於筆者有傳入與這個定義域相關的程式碼安全性原則 Evidence 物件,若您還是強制要執行的話,會得到如下錯誤訊息:

image

除非您使用其它不會使用到Evidence 物件的Overloading 方法,

要不然就是有兩種方式:

1.改以4.0方式取代過時的呼叫,

2.使用舊版CAS原則(在Configuration使用NetFx40_LegacySecurityPolicy設定)

 

若暫時不想修改程式可以使用第二種方法,在App.config增加一個<runtime>項目,並將enabled屬性設定為True,表是使用舊版的CAS程式碼安全性原則。

   1:  <?xml version="1.0" encoding="utf-8" ?>
   2:  <configuration>
   3:      <runtime>
   4:          <NetFx40_LegacySecurityPolicy enabled="true"/>
   5:      </runtime>
   6:  </configuration>

那麼上述的程式碼,不需要修改任何內容也可以在.NET 4.0中以相容性來執行。

 

對於舊版CAS有興趣可以參考黃忠成老師的文章(個人覺得解釋的非常的詳盡):

http://www.dotblogs.com.tw/code6421/archive/2008/05/07/3833.aspx

 

參考資料:

http://msdn.microsoft.com/zh-tw/library/ee191568.aspx

http://msdn.microsoft.com/zh-tw/library/dd409253.aspx


 

簽名:

學習是一趟奇妙的旅程

這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。

軟體開發之路(FB 社團)https://www.facebook.com/groups/361804473860062/

Gelis 程式設計訓練營(粉絲團)https://www.facebook.com/gelis.dev.learning/


 

如果文章對您有用,幫我點一下讚,或是點一下『我要推薦,這會讓我更有動力的為各位讀者撰寫下一篇文章。

非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^