<loadFromRemoteSources> 元素

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

注意

如果您因為 Visual Studio 專案錯誤清單的錯誤訊息或建置錯誤而導向本文,請參閱作法:如何在 Visual Studio 使用 Web 的組件

<設定>
  <執行階段>
    <loadFromRemoteSources>

Syntax

<loadFromRemoteSources
   enabled="true|false"/>

屬性和元素

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

屬性

屬性 描述
enabled 必要屬性。

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

啟用屬性

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

子元素

無。

父元素

元素 Description
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 以在其中載入組件。

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

如果未 enabled 設定為 true,則會在下列任一情況下擲回 FileLoadException

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

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

設定 <loadFromRemoteSources> 元素為 true 以防止擲回此例外狀況。 這個設定可讓您能夠指定您不依賴通用語言執行平台將載入的組件沙箱化以確保安全,並可以允許其在完全信任的情況執行。

備註

  • 在 .NET Framework 4.5 和更新版本中,局域網路共用上的元件 (也就是本機內部網路安全性) 區域預設會以完全信任方式執行;您不需要啟用 <loadFromRemoteSources> 元素。 針對 [本機電腦] 或 [本地內部網路] 以外的安全性區域,請將 值設定為 true

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

  • 您可以在 Windows Virtual PC 應用程式執行的應用程式取得 FileLoadException 。 當您嘗試從主控電腦的連結資料夾載入檔案時,就會發生這種情況。 當您嘗試從經由遠端桌面服務 (終端服務) 連結的資料夾載入檔案時,也可能會發生此錯誤。 若要避免例外狀況,請將 enabled 設定為 true

組態檔

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

範例

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

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

另請參閱