<loadFromRemoteSources> 요소

원격 원본에서 로드된 어셈블리에 .NET Framework 4 이상에서 완전 신뢰를 부여해야 하는지 여부를 지정합니다.

참고

Visual Studio 프로젝트 오류 목록의 오류 메시지 또는 빌드 오류로 인해 이 문서로 이동한 경우 방법: Visual Studio의 웹에서 어셈블리 사용을 참조하세요.

<configuration>
  <runtime>
    <loadFromRemoteSources>

구문

<loadFromRemoteSources
   enabled="true|false"/>

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성 설명
enabled 필수 특성입니다.

원격 원본에서 로드된 어셈블리에 완전 신뢰를 부여해야 하는지 여부를 지정합니다.

enabled 특성

Description
false 원격 원본의 애플리케이션에 완전 신뢰를 부여하지 마세요. 기본값입니다.
true 원격 원본의 애플리케이션에 완전 신뢰를 부여합니다.

자식 요소

없음

부모 요소

요소 Description
configuration 공용 언어 런타임 및 .NET Framework 애플리케이션에서 사용하는 모든 구성 파일의 루트 요소입니다.
runtime 런타임 초기화 옵션에 대한 정보를 포함합니다.

설명

.NET Framework 3.5 및 이전 버전에서 원격 위치에서 어셈블리를 로드하는 경우 어셈블리의 코드는 로드되는 영역에 따라 달라지는 권한 부여 집합을 사용하여 부분 신뢰로 실행됩니다. 예를 들어 웹 사이트에서 어셈블리를 로드하면 인터넷 영역으로 로드되고 인터넷 권한 집합이 부여됩니다. 즉, 인터넷 샌드박스에서 실행됩니다.

.NET Framework 4부터 CAS(코드 액세스 보안) 정책이 사용하지 않도록 설정되고 어셈블리가 완전 신뢰로 로드됩니다. 일반적으로 이는 이전에 샌드박스가 적용된 Assembly.LoadFrom 메서드로 로드된 어셈블리에 완전 신뢰를 부여합니다. 이를 방지하기 위해 원격 원본에서 로드된 어셈블리에서 코드를 실행하는 기능은 기본적으로 사용하지 않도록 설정되어 있습니다. 기본적으로 원격 어셈블리를 로드하려고 하면 다음과 같은 예외 메시지와 함께 FileLoadException이 throw됩니다.

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을 샌드박스를 적용하여 만듭니다.

<loadFromRemoteSources> 요소의 enabled 특성은 CAS(코드 액세스 보안)가 사용하지 않도록 설정된 경우에만 유효합니다. 기본적으로 CAS 정책은 .NET Framework 4 이상 버전에서 사용하지 않도록 설정되어 있습니다. enabledtrue로 설정하면 원격 어셈블리에 완전 신뢰가 부여됩니다.

enabledtrue로 설정되지 않은 경우 다음 조건 중 하나에서 FileLoadException이 throw됩니다.

  • 현재 도메인에 샌드박스를 적용하는 동작은 .NET Framework 3.5의 동작과 다릅니다. 이를 위해서는 CAS 정책을 사용하지 않도록 설정하고 현재 도메인에 샌드박스를 적용하지 않아야 합니다.

  • 로드되는 어셈블리는 MyComputer 영역에서 가져온 것이 아닙니다.

<loadFromRemoteSources> 요소를 true로 설정하면 이 예외가 throw되지 않습니다. 이를 통해 공용 언어 런타임에 의존하지 않고 보안을 위해 로드된 어셈블리에 샌드박스를 적용하도록 지정할 수 있으며, 완전 신뢰로 실행할 수 있게 됩니다.

메모

  • .NET Framework 4.5 이상 버전에서는 로컬 네트워크 공유(즉, 로컬 인트라넷 보안 영역)의 어셈블리가 기본적으로 완전 신뢰로 실행됩니다. 요소를 사용하도록 설정할 <loadFromRemoteSources> 필요가 없습니다. 로컬 컴퓨터 또는 로컬 인트라넷 이외의 보안 영역의 경우 값을 로 true설정합니다.

  • 애플리케이션을 웹에서 복사한 경우, Windows에서는 해당 프로그램이 로컬 컴퓨터에 있더라도 웹 애플리케이션이라는 플래그가 지정됩니다. 파일 속성을 변경하여 해당 지정을 변경하거나 <loadFromRemoteSources> 요소를 사용하여 어셈블리에 완전 신뢰를 부여할 수 있습니다. 또는 UnsafeLoadFrom 메서드를 사용하여 운영 체제가 웹에서 로드되었음을 표시하는 로컬 어셈블리를 로드할 수 있습니다.

  • Windows Virtual PC 애플리케이션에서 실행 중인 애플리케이션에서 FileLoadException을 얻을 수 있습니다. 이는 호스팅 컴퓨터에 연결된 폴더의 파일을 로드하려고 할 때 발생할 수 있습니다. 원격 데스크톱 서비스(터미널 서비스)를 통해 연결된 폴더에서 파일을 로드하려고 할 때도 발생할 수 있습니다. 예외를 방지하려면 enabledtrue로 설정합니다.

구성 파일

이 요소는 일반적으로 애플리케이션 구성 파일에서 사용하지만 컨텍스트에 따라 다른 구성 파일에서도 사용할 수 있습니다. 자세한 내용은 .NET 보안 블로그의 문서 CAS 정책의 암시적 사용: loadFromRemoteSources를 참조하세요.

예제

다음 예에서는 원격 원본에서 로드된 어셈블리에 완전 신뢰를 부여하는 방법을 보여 줍니다.

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

참고 항목