다음을 통해 공유


Internet Explorer를 사용하여 런타임 응용 프로그램 배포

업데이트: 2007년 11월

Web 기반 응용 프로그램에서 Microsoft Internet Explorer 5.5 이상을 사용하여 어셈블리를 다운로드 및 실행할 수 있습니다. 웹 기반 응용 프로그램은 이식 가능한 표준 실행 파일(PE) 형식인 .exe 또는 .dll을 모두 다운로드할 수 있습니다. HTML 문서에서는 다운로드할 수 있는 어셈블리, 어셈블리의 위치, 추가 정보를 제공하는 구성 파일의 위치 등에 관한 정보를 제공합니다.

Internet Explorer를 사용하여 응용 프로그램을 배포할 때의 이점은 사용될 때에만 어셈블리가 다운로드된다는 점입니다. 응용 프로그램이 여러 어셈블리로 구성된 경우 어셈블리는 참조될 때에만 다운로드됩니다. 전체 응용 프로그램을 다운로드할 필요가 없고 클라이언트는 사용하는 코드만 받기 때문에 이 자동 프로세스를 통해 응용 프로그램의 초기 다운로드가 훨씬 빨라집니다.

참고:

일반적으로 인터넷을 통해 배포되는 코드에는 보안 정책에 따라 설정된 기본 인터넷 권한이 있습니다. 코드에 이런 권한이 있으면 제한된 기능 집합만을 실행할 수 있습니다. 기본 인터넷 보안 정책에 대한 자세한 내용은 보안 정책 을 참조하십시오.

웹 기반 응용 프로그램 설정

기본적으로 공용 언어 런타임에서는 Internet Explorer를 사용하여 액세스 한 모든 사이트에 대해 응용 프로그램 도메인을 만듭니다. 응용 프로그램 도메인은 프로세스 내에서 실행되는 별도의 응용 프로그램을 격리합니다. 응용 프로그램 도메인을 만드는 방법은 도메인에서 어셈블리를 실행할 경우 어셈블리가 갖고 있는 권한에 영향을 미칩니다. 각 응용 프로그램 도메인은 URL 증명 정보 및 응용 프로그램 기본 디렉터리에 연결되며 이 도메인에 구성 파일이 있을 수도 있습니다.

URL 증명 정보

URL 증명 정보는 Microsoft Internet Explorer 5.5 이상을 사용하여 배포한 응용 프로그램에 할당됩니다. 런타임 호스트에서는 이 URL 증명 정보를 통해 보안 정책을 기반으로 한 결정이 이루어집니다. URL 증명 정보는 응용 프로그램을 구성하는 어셈블리와 응용 프로그램에 의해 만들어지는 응용 프로그램 도메인 모두에 연결되기는 하지만 증명 정보의 형식은 경우에 따라 다릅니다. 어셈블리의 경우 URL 증명 정보는 기본 어셈블리 파일에 대한 전체 URL 경로입니다. 예를 들어, 응용 프로그램의 일부인 어셈블리의 URL 증명 정보는 http://www.code.microsoft.com/myApp/myAssembly.dll이 될 수 있습니다. 응용 프로그램 도메인에 대한 URL 증명 정보는 사이트 증명 정보에 해당합니다. 이 경우 응용 프로그램 도메인에 대한 URL 증명 정보는 http://www.code.microsoft.com/이 됩니다.

참고:

응용 프로그램 구성 파일의 위치는 응용 프로그램 도메인에 대한 URL 증명 정보에는 적용되지 않습니다.

구성 파일

Internet Explorer를 사용하여 배포한 웹 응용 프로그램은 응용 프로그램 구성 파일에 저장되어 있는 정보를 사용할 수 있습니다. 응용 프로그램 구성 파일은 웹 서버에서 응용 프로그램 실행 파일이 저장되어 있는 디렉터리에 있어야 합니다. 응용 프로그램 구성 파일은 응용 프로그램 실행 파일의 이름 지정 규칙을 따라야 합니다. 즉, 이 파일의 이름은 실행 파일 이름과 같아야 하고 확장명은 .config를 사용해야 합니다. 예를 들어, 응용 프로그램 이름이 myApplication.exe이면 응용 프로그램 구성 파일 이름은 myApplication.exe.config가 됩니다.

ASP.NET 응용 프로그램은 web.config 파일을 사용하여 구성 정보를 지정합니다. Web 응용 프로그램은 ASP.NET과 실행 호스트에서 하는 것처럼 구성 정보를 제공할 수 있습니다. Internet Explorer에서 호스팅되는 응용 프로그램에 구성 파일이 있을 경우 구성 파일의 위치는 다음 구문을 사용하여 <link> 태그로 지정됩니다.

<LINK REL="CONFIGURATION" HREF="[configuration file name]"></LINK>

이 예제에서 [configuration file name]은 구성 파일 이름입니다. 예를 들면 다음과 같습니다.

<LINK REL="CONFIGURATION" HREF="two.dll.config"></LINK>

웹 페이지에서 구성 파일에 대한 <link> 태그를 제공하지 않는 기본 웹 응용 프로그램 시나리오의 경우, 런타임은 각 사이트 단위로 응용 프로그램 도메인을 만듭니다. 즉, HTML 문서가 http://www.code.microsoft.com/myApp/mypage.htm에 있을 경우, 응용 프로그램 도메인은 전체 사이트 http://www.code.microsoft.com에서 만들어집니다. 웹 작성자에게는 이 시나리오가 편리하지만, 이 사이트의 관리 코드 어셈블리를 사용하는 모든 웹 페이지에서는 구성 파일을 지정하지 않았기 때문에 같은 응용 프로그램 도메인을 공유하게 됩니다.

응용 프로그램이 응용 프로그램 구성 파일에서 정보를 읽는 경우에 개발자는 다음을 수행해야 합니다.

  • 구성 파일을 실행 파일과 같은 위치에 둡니다.

  • 웹 사이트에 대한 익명 액세스를 허용합니다. 또한 구성 파일이 포함되어 있는 디릭터리에서는 스크립트를 실행할 수 있어야 합니다.

더 복잡한 시나리오에서는 두 개 이상의 다른 응용 프로그램이 서로 격리되어 같은 사이트에서 실행되어야 하는 경우가 있습니다. 이렇게 격리하기 위해 웹 페이지 작성자는 HTML 문서에 구성 파일을 지정해야 합니다. 같은 구성 파일을 가리키는 모든 페이지는 같은 응용 프로그램 도메인에 만들어집니다. 이렇게, 각 구성 파일 단위로 응용 프로그램 도메인을 만들 수 있습니다.

참고:

런타임은 <link> 태그에 관련 경로가 포함되어 있을 때 구성 파일을 가리키는 URL에서 '#' 문자를 지원하지 않습니다.

응용 프로그램 기본 디렉터리

ApplicationBase는 런타임에서 어셈블리를 검색할때 루트 디렉터리 역할을 하는 디렉터리를 지정하는 응용 프로그램 도메인 속성입니다. 기본적으로 ApplicationBase 속성은 사이트의 루트(예: wwwroot)로 간주됩니다. 응용 프로그램 구성 파일이 있으면 ApplicationBase가 구성 파일의 위치가 됩니다. 구성 파일에는 응용 프로그램 도메인에서 실행되는 코드에 관련된 구성 정보가 포함될 수 있습니다. 컴퓨터에 둘 이상의 사이트가 정의되어 있으면 기본적으로 포트 80에 정의된 '기본' 사이트가 ApplicationBase가 됩니다.

관리되는 실행 파일 다운로드

<object> 태그를 사용하여 다운로드되는 대부분의 응용 프로그램이 웹 페이지에 나타나는 UI 컨트롤이지만, 런타임에서는 관리되는 실행 파일을 다운로드하기 위해 다음 두 가지 시나리오도 지원합니다.

  • 사용자가 브라우저에 다음과 같이 관리되는 .exe 파일의 URL을 입력합니다.

    http://www.server.microsoft.com/MyWebSite/MyApp.exe.
    
  • HTML 페이지에 다음과 같이 관리되는 실행 파일의 링크가 포함되어 있습니다.

    HREF="MyApp.exe".
    

두 가지 시나리오에서 런타임은 실행 파일을 실행할 새로운 응용 프로그램 도메인을 만듭니다. 그런 다음 어셈블리가 요청되면, 응용 프로그램 기본 디렉터리는 실행 파일의 위치로 설정됩니다.

예를 들어, 다음 코드에서는 myClass를 참조합니다.

<object id="myCtl" 
  classid="http://www.mycode.Microsoft.com/mycode.dll#myClass"> 
</object>

<object> 태그를 사용하여 호출하는 어셈블리를 지정할 경우 호출하는 어셈블리와 같은 디렉터리에 정적으로 연결된 종속 어셈블리가 있어야 합니다. 예를 들어, myAssembly.dll 어셈블리가 <object> 태그를 사용하여 지정되고 myOtherAssembly.dll을 정적으로 참조할 경우 myOtherAssembly.dll은 myAssembly.dll과 같은 디렉터리에 있어야 합니다.

참고:

Internet Explorer에서 HREF 링크를 통해 배포된 관리 코드 실행 파일은 명령줄 인수로 시작될 수 없습니다. 이 실행 파일에는 인수가 제대로 전달되지 않기 때문입니다.

오류 보고

코드 다운로드 프로세스에서는 다음 두 레지스트리 설정을 사용하여 Internet Explorer를 통해 배포된 관리 코드 실행 파일의 오류 보고를 제어합니다.

  • HKLM\Software\Microsoft\.NETFramework\ExposeExceptionsInCOM

  • HKCU\Software\Microsoft\.NETFramework\ExposeExceptionsInCOM

두 설정 모두 다음 값을 사용하여 오류 보고 방법을 지정합니다.

설명

1

오류 정보를 표준 출력 스트림으로 보냅니다.

2

오류 정보를 사용자에게 표시합니다.

3

오류 정보를 표준 출력 스트림에 보내고 사용자에게 표시합니다.

Internet Explorer를 사용하여 배포한 관리 코드를 디버깅할 때 이 설정 값을 사용하여 코드 다운로드 실패에 대한 자세한 정보를 찾을 수 있습니다. 예를 들어, 예외가 throw될 경우 개발자가 아닌 최종 사용자용으로 디자인된 Internet Explorer에서 제공하는 오류 보고에 의존하지 않고 이 설정을 사용하여 스택 추적 정보를 볼 수 있습니다.

Internet Explorer에서 호스팅되는 컨트롤

Internet Explorer에서는 .NET Framework를 사용하여 만든 컨트롤을 호스팅할 수 있습니다. 이때 컨트롤은 라이브러리에 포함되어 있고 확장명은 .dll이어야 합니다. 또한 독립 실행형과 Internet Explorer에서 호스팅된 경우 모두 같은 Windows Form 컨트롤을 사용하려면 라이브러리의 확장명이 .dll이어야 합니다.

중요:

Internet Explorer에 의해 호스팅되는 관리되는 컨트롤은 모두 컴퓨터에 설치된 공용 언어 런타임의 최신 버전을 사용합니다. 따라서 이 컨트롤이 빌드된 버전에 대해 컨트롤이 실행되지 않을 수 있으며, 컨트롤이 동일한 보안 정책 하에서 의도한 대로 실행되지 않을 수 있습니다. 공용 언어 런타임의 새 버전에서 관리되는 컨트롤을 실행하기 전에 새 런타임 버전에 대한 보안 정책을 업데이트해야 합니다. 이 내용은 모든 보안 영역에 적용되지만 다운로드된 관리되는 실행 파일에는 적용되지 않습니다.

참고:

   관리되는 컨트롤을 로드할 때 <object> 요소 classid 특성 값의 최대 길이는 256자입니다(MAX_PATH). 길이가 최대값보다 클 경우 컨트롤이 로드되지 않지만 오류도 발생하지 않습니다. 예를 들어, 다음 classid 특성 값은 허용되는 길이입니다.

<object id="myCtl" classid="http://www.example.com/mycode.dll#myClass">

참고:

보안상의 이유로 HTML 페이지에서 <object> 태그 및 파일 액세스 프로토콜을 사용하여 관리되는 컨트롤은 지원되지 않습니다. 예를 들어, 다음 <object> 태그는 지원되지 않습니다.

<OBJECT classid="file:///c:/control.dll#control">

종속 어셈블리 찾기

런타임에서 웹 기반 응용 프로그램의 종속 어셈블리를 찾는 데 사용하는 과정은 웹 기반이 아닌 응용 프로그램의 종속 어셈블리를 찾는 데 사용하는 과정과 유사합니다. 런타임에서는 ApplicationBase의 상대 경로를 사용하여 전용 종속 어셈블리를 검색합니다. 런타임에서는 ApplicationBase, 구성 파일의 <private_binpath> 태그 및 검색 규칙에 대한 조합을 사용하여 전용 어셈블리를 찾습니다. 또한, 런타임에서는 호출하는 어셈블리가 있는 URL을 확인하여 종속 어셈블리를 검사합니다.

Microsoft Authenticode Signature로 관리 코드에 서명

파일 서명 도구(Signcode.exe)를 사용하여 파일에 Authenticode 디지털 서명으로 서명할 수 있습니다. 강력한 이름과 Authenticode 디지털 서명 모두로 파일에 서명을 하려면 먼저 강력한 이름을 할당해야 합니다. Authenticode 서명을 먼저 할당하면 강력한 이름은 차단됩니다. 파일 서명에 대한 자세한 내용은 어셈블리 보안 고려 사항을 참조하십시오. Visual Studio 2005를 사용하여 파일에 서명하는 방법에 대한 자세한 내용은 Visual Studio 2005 설명서의 "배포 및 Authenticode 서명"을 참조하십시오. Authenticode 서명 기술에 대한 자세한 내용은 Platform SDK 설명서의 "코드 서명 소개"을 참조하십시오.

참고 항목

개념

.NET Framework 응용 프로그램의 배포 시나리오

어셈블리 보안 고려 사항

런타임에서 어셈블리를 찾는 방법

참조

파일 서명 도구(Signcode.exe)