<loadFromRemoteSources > 元素

指定從遠端來源載入的元件是否應該在 .NET Framework 4 和更新版本中獲得完全信任。

注意

如果您因為 Visual Studio 專案錯誤清單中的錯誤訊息或建置錯誤而導向至本文,請參閱 How to: Use an Assembly from the Web in Visual Studio

<配置>
  <運行>
    <loadFromRemoteSources>

Syntax

<loadFromRemoteSources
   enabled="true|false"/>  

屬性和元素

下列章節說明屬性、子元素和父元素。

屬性

屬性 描述
enabled 必要屬性。

指定是否應該將從遠端來源載入的元件授與完全信任。

enabled 屬性

描述
false 請勿將完全信任授與來自遠端來源的應用程式。 此為預設值。
true 將完全信任授與來自遠端來源的應用程式。

子元素

無。

父元素

元素 描述
configuration 通用語言執行平台和 .NET Framework 應用程式所使用之每個組態檔中的根項目。
runtime 包含有關執行階段初始化選項的資訊。

備註

在 .NET Framework 3.5 和舊版中,如果您從遠端位置載入元件,元件中的程式碼會以部分信任的方式執行,而授與集取決於載入它的來源區域。 例如,如果您從網站載入元件,它會載入到網際網路區域,並授與網際網路許可權集合。 換句話說,它會在網際網路沙箱中執行。

從 .NET Framework 4 開始,會停用程式碼存取安全性 (CAS) 原則,並載入完全信任的元件。 一般而言,這會將完全信任授與先前已沙箱化的方法所載入 Assembly.LoadFrom 的元件。 若要避免這種情況,預設會停用從遠端來源載入的元件中執行程式碼的能力。 根據預設,如果您嘗試載入遠端元件, FileLoadException 則會擲回例外狀況訊息,如下所示:

System.IO.FileNotFoundException: Could not load file or assembly 'file:assem.dll' or one of its dependencies. Operation is not supported.
(Exception from HRESULT: 0x80131515)
File name: 'file:assem.dll' --->
System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly
to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default,
so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch.

若要載入元件並執行其程式碼,您必須:

  • 明確建立元件的沙箱 (請參閱 如何:在沙箱中執行部分信任的程式碼) 。

  • 完全信任執行元件的程式碼。 您可以藉由設定 <loadFromRemoteSources> 元素來執行此動作。 它可讓您指定在舊版.NET Framework中部分信任中執行的元件現在會在 .NET Framework 4 和更新版本中以完全信任執行。

重要

如果元件不應完全信任執行,請勿設定此組態專案。 相反地,請建立沙箱化 AppDomain ,在其中載入元件。

只有在 enabled 停用程式碼存取安全性 (CAS) 時,元素的 屬性 <loadFromRemoteSources> 才有效。 根據預設,CAS 原則會在 .NET Framework 4 和更新版本中停用。 如果您設定 enabledtrue ,則會將遠端元件授與完全信任。

如果未 enabled 設定為 trueFileLoadException 則會在下列任一條件下擲回 :

  • 目前網域的沙箱化行為與其在 .NET Framework 3.5 中的行為不同。 這需要停用 CAS 原則,而且目前的網域不會進行沙箱化。

  • 正在載入的元件不是來自 MyComputer 區域。

<loadFromRemoteSources>將 專案設定為防止 true 擲回這個例外狀況。 它可讓您指定您不依賴 Common Language Runtime 來將載入的元件沙箱化,以提供安全性,並允許它們完全信任執行。

備註

  • 在 .NET Framework 4.5 和更新版本中,局域網路共用上的元件預設會以完全信任執行;您不需要啟用 <loadFromRemoteSources> 元素。

  • 如果已從網路複製應用程式,即使該應用程式位於本機電腦上,Windows 仍會將它標示為 Web 應用程式。 您可以變更其檔案屬性來變更該指定,也可以使用 <loadFromRemoteSources> 元素來授與元件完全信任。 或者,您可以使用 UnsafeLoadFrom 方法載入作業系統標示為從 Web 載入的本機組件。

  • 您可能會在 Windows 虛擬電腦應用程式中執行的應用程式中取得 FileLoadException 。 當您嘗試從主控電腦上的連結資料夾載入檔案時,就會發生這種情況。 當您嘗試從透過 遠端桌面服務 連結的資料夾載入檔案時,也會發生此情況, (終端機服務) 。 若要避免例外狀況,請將 設定 enabledtrue

組態檔

此項目通常用於應用程式組態檔,不過可以根據內容用於其他組態檔。 如需詳細資訊,請參閱 .NET Security 部落格中的 更多 CAS 原則隱含用法:loadFromRemoteSources 一文。

範例

下列範例示範如何將完全信任授與從遠端來源載入的元件。

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

另請參閱