ReportViewer에 대한 Web.config 설정

ReportViewer 웹 서버 컨트롤을 사용하는 경우 ASP.NET Web.config 응용 프로그램 설정을 지정하여 런타임에 ReportViewer를 구성할 수 있습니다. 이 항목에서는 원격 보고서 서버에 연결하고 임시 스트림을 저장하며 사용자 지정 문자열을 제어 사용자 인터페이스에 제공하는 데 사용되는 Web.config 응용 프로그램 설정을 설명합니다. 또한 웹 팜 배포에서 실행되는 ReportViewer 응용 프로그램에 대한 <sessionState> 및 <machineKey> 설정을 사용하는 방법에 대한 권장 사항을 제공하고 <httpHandlers> Web.config 섹션에 ReportViewer 웹 서버 컨트롤에 의해 사용되는 HTTP 처리기에 대한 설정이 정의되는 방식을 설명합니다.

ReportViewer 컨트롤에 대한 <appSettings> 요소 구성

ReportViewer 웹 서버 컨트롤에 대한 사용자 지정 응용 프로그램 설정을 구성하려면 응용 프로그램의 Web.config 파일에 있는 <appSettings> 섹션에 다음 키를 추가합니다. 이러한 키의 값은 특정 인터페이스를 구현하는 정규화된 클래스 이름입니다.

사용 주체

ReportViewerServerConnection

이 키는 IReportServerConnection 인터페이스를 구현하는 클래스를 지정합니다. 이 인터페이스는 세션 상태가 해제되어 있거나 연결 정보를 ASP.NET 세션에 저장하지 않으려는 경우 보고서 서버 연결 정보를 제공합니다.

쿠키와 사용자 지정 헤더를 지정할 수 있도록 하는 IReportServerConnection2 인터페이스를 구현하는 클래스를 지정할 수도 있습니다.

ReportViewerTemporaryStorage

이 키는 ITemporaryStorage 인터페이스를 구현하는 클래스를 지정합니다. 이 인터페이스는 보고서 서버에 의해 전송되는 임시 스트림을 메모리에 보관하는 대신 저장하는 데 사용됩니다. 이에 따라 응용 프로그램의 확장성이 개선됩니다.

ReportViewerMessages

이 키는 IReportViewerMessages 인터페이스를 구현하는 클래스를 지정합니다. 이 인터페이스는 사용자 지정된 사용자 인터페이스 메시지를 제공하는 데 사용됩니다.

Visual Studio 2010에서는 [T:Microsoft.Reporting.WebForms.]IReportViewerMessages3이라는 새 인터페이스가 ReportViewer 컨트롤에 추가되었습니다. ReportViewer 컨트롤이 제공하는 모든 사용자 인터페이스 메시지를 사용하려면 여기서 IReportViewerMessages3 인터페이스를 구현하는 클래스를 지정합니다.

정규화된 클래스 지정

각 키의 값은 인터페이스 및 이를 포함하는 어셈블리의 위치를 구현하는 클래스입니다. ASP.NET에서는 다음 구문을 사용하여 여러 가지 방법으로 이러한 클래스를 지정할 수 있습니다.

<add key="MyKeyName" value="MyNamespace.MyClass, Location" />

클래스가 어셈블리에서 구현되는 경우 위치는 응용 프로그램 bin 폴더나 GAC(전역 어셈블리 캐시)가 될 수 있습니다. 이 경우 키 값은 버전, culture 및 공개 키 토큰 값이 포함된 정규화된 어셈블리 이름으로 지정되어야 합니다. 클래스가 응용 프로그램의 APP_CODE 폴더에 있는 원본 코드 파일에서 구현되는 경우에는 해당 폴더를 위치로 지정해야 합니다.

다음 예는 GAC, 응용 프로그램 bin 폴더 또는 APP_CODE 폴더에서 정규화된 클래스를 지정하는 올바른 방법입니다.

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken= 00000000000000000 "/>

--또는--

<add key="ReportViewerServerConnection" value="MyNamespace.MyClass, MyAssembly"/>

--또는--

<add key="ReportViewerServerConnection" value=" MyNamespace.MyClass, APP_CODE"/>

ReportViewerServerConnection

IReportServerConnection 또는 IReportServerConnection2 인터페이스를 구현하여 보고서 서버 연결 정보를 제공하는 경우 Web.config 파일에 ReportViewerServerConnection 키를 정의해야 합니다. 이 키는 IReportServerConnection 및 이를 포함하는 어셈블리 또는 원본 파일을 구현하는 사용자 지정 클래스를 지정합니다.

ReportViewerServerConnection 키에 클래스를 제공하는 경우 ServerReport 개체에서 해당 키와 충돌할 수 있는 다른 속성을 설정하지 않아야 합니다. 특히 ServerReport.Timeout, ServerReport.ReportServerUrl, ServerReport.ReportServerCredentials, ServerReport.Cookies 또는 ServerReport.Headers 속성을 설정하지 않습니다.

다음 예에서는 ReportViewerServerConnection 키의 구문을 보여 줍니다. 이 구문에서는 응용 프로그램 Bin 폴더에 있는 MyAssembly라는 어셈블리에서 IReportServerConnection2를 구현하는 클래스를 지정합니다.

<appSettings>
    <add key="ReportViewerServerConnection" value="MyNamespace.MyRVServerConnectionClass, MyAssembly"/>
</appSettings>

IReportServerConnection을 구현하는 클래스의 코드 예를 보려면 ReportViewer 웹 서버 컨트롤에 대한 연결 및 자격 증명 지정을 참조하십시오.

ReportViewerTemporaryStorage

ITemporaryStorage 인터페이스를 구현하는 개체를 지정하려면 ReportViewerTemporaryStorage 키를 설정해야 합니다. 보고서 서버에 의해 전송되는 임시 스트림을 메모리에 보관하는 대신 저장하려면 이 인터페이스를 구현합니다. 새 요청을 시작하려면 각 요청을 먼저 완료해야 하기 때문에 항상 현재 페이지만 저장됩니다. 이 설정은 서버 보고서에만 사용됩니다. 다음 예에서는 ReportViewerTemporaryStorage 키의 구문을 보여 줍니다.

<appSettings>
    <add key="ReportViewerTemporaryStorage" value="MyNamespace.MyTemporaryStorageClass, MyAssembly" />
</appSettings>

ReportViewerMessages

ReportViewer 컨트롤에 사용자 지정 문자열을 제공하는 인터페이스인 IReportViewerMessages를 구현하는 개체를 지정하려면 ReportViewerMessages 키를 설정해야 합니다. 이 인터페이스를 사용하여 기본적으로 제공되지 않는 언어에 대한 문자열 지역화를 지원할 수 있습니다. 다음 예에서는 ReportViewerMessages 키의 구문을 보여 줍니다.

<appSettings>
    <add key="ReportViewerMessages" value="MyNamespace.MyRVMessageClass, MyAssembly" />
</appSettings>

ReportViewer 컨트롤에 대한 <system.web> 요소 구성

응용 프로그램의 Web.config 파일에 있는 <system.web> 섹션의 설정을 정의하여 런타임에서의 보고서 세션 동작을 결정할 수 있습니다. ReportViewer 컨트롤도 이 섹션을 사용하여 해당 컨트롤이 제공하는 HTTP 처리기에 대한 설정을 등록합니다. <sessionState>, <machineKey> 및 <httpHandler> 요소가 사용됩니다.

<sessionState>

sessionState 요소를 사용하여 세션 상태가 프로세스 중 저장되는지, 해제되는지 또는 Out-of-process ASP.NET 상태 서비스에 의해 처리되는지를 결정할 수 있습니다.

InProc이 기본 설정이며 특정 컴퓨터에서 응용 프로그램이 실행되는 경우에 사용할 수 있습니다. 보고서가 웹 팜에서 실행되는 응용 프로그램에서 실행되는 경우에는 이 설정을 사용하지 마십시오.

ReportViewer 컨트롤이 로컬 모드에서 클라이언트 보고서 정의 파일(.rdlc)을 처리하는 경우 Off를 사용하지 않아야 합니다. 로컬 모드에는 세션 상태가 필요합니다. 원격 모드를 사용 중이면 세션 상태를 해제할 수 있습니다. 세션 상태를 해제하는 경우 <appSetting> 요소에 ReportViewerServerConnection을 지정해야 합니다.

다른 <sessionState> 모드인 Custom, SQLServer 및 StateServer를 사용할 수도 있습니다.

<machineKey>

웹 팜이나 클러스터에서 ReportViewer 컨트롤을 배포하는 경우 <machineKey> 요소 지정을 통해 팜의 모든 노드가 동일한 프로세스 ID를 사용하여 한 컴퓨터에서 저장된 뷰 상태를 모든 컴퓨터에서 읽을 수 있도록 해야 합니다.

참고

Microsoft .NET Framework 설명서(2.0 이상)에서 제공하는 최선의 권장 구현 방법은 <machineKey> 요소를 설정하여 웹 팜의 뷰 상태를 동기화하는 것입니다. 웹 서비스 네트워크에 대해 뷰 상태 유효성 검사를 구성하는 방법은 machineKey Element를 참조하십시오.

.NET Framework 2.0 이상에서는 뷰 상태 유효성 검사가 기본적으로 설정되며 ASP.NET 프로세스 ID 정보를 사용하여 유효성 검사를 수행합니다. 프로세스 ID가 노드마다 다른 클러스터 또는 웹 팜 시나리오에서는 프로세스 ID에 의한 유효성 검사가 실행되지 않습니다. 모든 노드에서 동일한 프로세스 ID를 사용하도록 강제하려면 뷰 상태 유효성 검사를 지원하는 유효성 검사 키를 생성하고 각 노드에서 이 키를 사용하도록 수동으로 구성할 수 있습니다.

  1. 유효성 검사 키를 생성합니다. .NET Framework에서 제공하는 자동 생성 기능을 사용하거나 다른 방법으로 키를 만들 수 있습니다. validationKey 특성을 설정할 때는 AutoGenerate 옵션을 사용하지 마십시오.

  2. 암호 해독 키를 생성합니다. 암호 해독 키에 대해 명시적 값을 만들거나 decryptionKey를 AutoGenerate로 설정할 수 있습니다.

  3. 웹 팜의 각 노드에 대한 Web.config 파일을 열고 machineKey 요소를 설정합니다. 데이터 유효성 검사에 사용되는 유효성 검사 키, 암호 해독 키 및 암호화 유형을 지정해야 합니다.

  4. 웹 팜이나 클러스터 배포의 각 노드에 대해 이러한 단계를 반복합니다.

<httHandlers>

ReportViewer 웹 서버 컨트롤에는 보고서에 포함되어 있거나 보고서에서 참조되는 이미지를 검색하고, 보고서를 다른 출력 형식으로 내보내며, 보고서 매개 변수에 대한 날짜를 선택하는 데 사용되는 달력 컨트롤을 제공하고, 보고서 세션을 열린 상태로 유지하며, ReportViewer 컨트롤에서 클라이언트측 스크립팅 기능을 지원하는 데 사용되는 HTTP 처리기가 포함되어 있습니다.

HTTP 처리기에 대한 구성 설정은 응용 프로그램 Web.config 파일의 system.web/httpHandlers 요소 및 system.webServer/handlers 요소에 지정되어 있습니다. system.web/httpHandler에 지정된 처리기는 클래식 모드의 IIS(인터넷 정보 서비스) 6.0 또는 IIS 7.0에서 사용되고, system.webServer/handlers에 지정된 처리기는 통합 모드의 IIS 7.0에서 사용됩니다. 구성 설정은 ReportViewer 웹 서버 컨트롤을 도구 상자에서 웹 폼으로 끌 때 자동으로 Web.config 파일에 입력됩니다. HTTP 처리기는 컨트롤의 일부이므로 제거하거나 대체할 수 없습니다.

중요

통합 모드에서 IIS 7.0을 사용하려면 system.web/httpHandlers에서 HTTP 처리기를 제거해야 합니다. 그렇지 않으면 IIS에서 응용 프로그램을 실행하지 않고 오류 메시지가 표시됩니다.

해당 섹션에서 IIS 버전에 적용되는 HTTP 처리기를 유지해야 합니다. HTTP 처리기 구성 설정을 제거하거나 수정할 경우 웹 폼의 ReportViewer 웹 서버 컨트롤에서 HTTP 처리기 구성 설정을 web.config 파일의 해당 섹션에 다시 추가하라는 오류 메시지를 표시합니다. 다음은 system.web/httpHandlers 및 system.webServer/handlers에 포함된 HTTP 처리기입니다.

<system.web>
   <httpHandlers>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" 
      type="Microsoft.Reporting.WebForms.HttpHandler, 
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" 
      />
   </httpHandlers>
</system.web>
<system.webServer>
   <handlers>
      <add name="ReportViewerWebControlHandler" 
      preCondition="integratedMode"
      verb="*" path="Reserved.ReportViewerWebControl.axd" 
      type="Microsoft.Reporting.WebForms.HttpHandler, 
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0, 
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
      />
</handlers>
</system.webServer>

참고 항목

개념

ReportViewer 컨트롤 추가 및 구성

보고서 및 ReportViewer 컨트롤 배포

관련 자료

httpHandlers

handler