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 세션에 저장하지 않으려는 경우 보고서 서버 연결 정보를 제공합니다. 응용 프로그램에 사용되는 모든 보고서가 같은 보고서 서버에서 처리되는 경우 세션의 각 ServerReport 개체에 ReportServerUrl 및 TimeOut 속성을 저장하는 것보다 ReportViewerServerConnection 키를 사용하여 Web.config 파일에서 한 번만 연결 정보를 지정하는 것이 보다 효율적입니다. |
ReportViewerTemporaryStorage |
이 키는 ITemporaryStorage 인터페이스를 구현하는 클래스를 지정합니다. 이 인터페이스는 보고서 서버에 의해 전송되는 임시 스트림을 메모리에 보관하는 대신 저장하는 데 사용됩니다. 이에 따라 응용 프로그램의 확장성이 개선됩니다. |
ReportViewerMessages |
이 키는 IReportViewerMessages 인터페이스를 구현하는 클래스를 지정합니다. 이 인터페이스는 사용자 지정된 사용자 인터페이스 메시지를 제공하는 데 사용됩니다. |
정규화된 클래스 지정
각 키의 값은 인터페이스 및 이를 포함하는 어셈블리의 위치를 구현하는 클래스입니다. ASP.NET에서는 다음 구문을 사용하여 여러 가지 방법으로 이러한 클래스를 지정할 수 있습니다.
<add key="MyKeyName" value="MyNamespace.MyClass, Location" />
클래스가 어셈블리에서 구현되는 경우 위치는 응용 프로그램 bin 폴더나 GAC(전역 어셈블리 캐시)가 될 수 있습니다. 이 경우 키 값은 버전, 문화권 및 공개 키 토큰 값이 포함된 정규화된 어셈블리 이름으로 지정되어야 합니다. 클래스가 응용 프로그램의 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 요소(ASP.NET 설정 스키마)를 참조하십시오. |
.NET Framework 2.0에서는 뷰 상태 유효성 검사가 기본적으로 설정되며 ASP.NET 프로세스 ID 정보를 사용하여 유효성 검사를 수행합니다. 프로세스 ID가 노드마다 다른 클러스터 또는 웹 팜 시나리오에서는 프로세스 ID에 의한 유효성 검사가 실행되지 않습니다. 모든 노드에서 동일한 프로세스 ID를 사용하도록 강제하려면 뷰 상태 유효성 검사를 지원하는 유효성 검사 키를 생성하고 각 노드에서 이 키를 사용하도록 수동으로 구성할 수 있습니다.
유효성 검사 키를 생성합니다. .NET Framework에서 제공하는 자동 생성 기능을 사용하거나 다른 방법으로 키를 만들 수 있습니다. validationKey 특성을 설정할 때는 AutoGenerate 옵션을 사용하지 마십시오.
암호 해독 키를 생성합니다. 암호 해독 키에 대해 명시적 값을 만들거나 decryptionKey를 AutoGenerate로 설정할 수 있습니다.
웹 팜의 각 노드에 대한 Web.config 파일을 열고 machineKey 요소를 설정합니다. 데이터 유효성 검사에 사용되는 유효성 검사 키, 암호 해독 키 및 암호화 유형을 지정해야 합니다.
웹 팜이나 클러스터 배포의 각 노드에 대해 이러한 단계를 반복합니다.
<<httHandlers>>
ReportViewer 웹 서버 컨트롤에는 보고서에 포함되어 있거나 참조된 이미지를 표시하고, 보고서를 다른 출력 형식으로 내보내고, 보고서 매개 변수에 대한 날짜를 선택하는 데 사용되는 달력 컨트롤을 제공하고, 보고서 세션을 열린 상태로 유지하는 데 사용되는 HTTP 처리기가 포함됩니다.
HTTP 처리기에 대한 구성 설정은 응용 프로그램 Web.config 파일의 httpHandlers 요소에 지정되어 있습니다. 구성 설정은 ReportViewer 웹 서버 컨트롤을 도구 상자에서 웹 페이지로 끌 때 자동으로 Web.config 파일에 입력됩니다.
HTTP 처리기 구성 설정은 제거하거나 수정할 수 없습니다. Web.config에서 <httpHandlers> 설정을 수정하거나 삭제하면 .aspx 페이지를 볼 때 ReportViewer 웹 서버 컨트롤이 "ReportViewer 웹 컨트롤 HTTP 처리기가 응용 프로그램의 Web.config 파일에 등록되어 있지 않습니다"오류를 반환합니다. 오류 메시지에는 HTTP 처리기에 필요한 구성 정보가 포함되므로 이러한 설정 약어를 Web.config 파일에 복사할 수 있습니다. 문자열은 다음 예와 유사합니다. 이때 버전 정보와 PublicKeyToken은 다릅니다.
<httpHandlers>
<add path="Reserved.ReportViewerWebControl.axd" verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler,
Microsoft.ReportViewer.WebForms, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=0000000000000000" validate="false"
/>
</httpHandlers>
HTTP 처리기는 컨트롤의 일부이므로 제공되는 사용자 지정 기능으로 바꾸거나 제거할 수 없습니다.