日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在.Net framework中动态加载Assembly的loadFromRemoteSources配置

發布時間:2023/12/15 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在.Net framework中动态加载Assembly的loadFromRemoteSources配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

在插件類型的應用開發中,我們可能會在程序中動態加載一個assembly文件,創建其中的類對象并使用。
這時,就涉及到了CAS(code access security)和信任沙盒。
一般,我們的應用開發中,使用其他的庫時,會在代碼中直接引入,并編碼使用。但如果我們不是在編譯時引用,而是在應用時動態加載該庫文件,解析出class和類型,并進一步使用。這時,庫文件可能被篡改,導致錯誤和安全。那么如果需要后期加載,在DotNet要求我們提供我們的Trust配置。

配置

在應用的配置中,添加loadFromRemoteSources項;

這個配置如下層次:

<configuration><runtime><loadFromRemoteSources enabled="true"/></runtime> </configuration>

loadFromRemoteSources說明

在.Net Framework 3.5及之前的版本中,有賴于你的執行區域zone,你的應用如果加載了外部的庫assembly,你的庫可能執行在一個部分信任(partial trust)里。比如我們加載一個web網絡上的assembly,那么氣被加載到一個internet zone區域執行,并被賦予Internet的允許集合–其在一個internet的沙盒中執行。 缺省設置下,遠程庫文件不允許在.net framework 4版本及更新版本中,不允許執行。如果要執行,要么設置完全信任,要么創建一個隊員的沙盒AppDomain來執行。

在.Net Framework 4及以后的版本中,你要么顯式地為該assembly創建一個沙盒,要么完全地信任并執行。否則,會拋出異常。

在應用配置中的loadFromRemoteSources元素,用來指定在以前版本的.Net framework 中部分信任的庫文件,在版本4或更新的版本中,是否使用完全信任模式。設置為true,則使用完全信任模式。

  • 但在4.5版本中,本地網絡中的assembly文件,缺省模式下時完全信任執行的。
  • 可以使用**Assembly.UnsafeLoadFrom()**來加載assembly,這會跳過一些安全檢測,也會把來自網絡的assembly看做本地的assembly。 OS會把來自網絡的assembly標示為internet assembly,即使已經下載保存在本地了。

其他說明

缺省下,在.Net Framework 4級以后的版本,CAS 策略是disabled,也只有在CAS為disabled時, loadFromRemoteSources 設置為true才能有效。

拋出異常的情況

如果loadFromRemoteSources沒有設置為true,在下面的情形下,會有異常拋出:

  • 使用的assembly不是在MyComputer的zone中。
  • 在.Net Framework 3.5版本中,當前應用的domain的沙盒行為和assembly的行為不同。此時CAS 策略要關閉,而且當前的domain沒有在沙盒中。

另外的解決方法:

  • 使用Assembly.UnsafeLoadFrom
Assembly a = Assembly.UnsafeLoadFrom(strDllName);

-使用Assembly a = Assembly.Load(byte[] codeBytes)

byte[] assemblyBuffer = File.ReadAllBytes(strDllFileName); Assembly a = Assembly.Load(assemblyBuffer);

總結

以上是生活随笔為你收集整理的在.Net framework中动态加载Assembly的loadFromRemoteSources配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。