2011-08-01 3 views
1

좋아, 이제는 회사 웹 사이트에서 일하고 있습니다. 우리는 고전적인 ASP를 여기에서 말하고 있습니다. 개발 서버에서 작업했지만 두 번째로는 웹 서비스와 같은 서버의 다른 것들을 프로덕션 서버로 가져갔습니다.특정 파일/폴더 전용 HTTP 처리기 등록 또는 프로그래밍 방식으로 http 처리기 등록

그래서 기본적으로 보고서 뷰어 컨트롤을 사용하는 aspx 페이지를 추가했습니다. 웹 구성 파일에 http 핸들러를 추가 할 때 문제가 발생합니다. 사이트의 아키텍처가 모두 엉망이기 때문에 루트 웹 구성 파일을 수정해야하며 하위 디렉토리가 루트 웹 구성 파일을 상속하므로 문제가 발생합니다. 여기

내가 일하는 것이 생각 나는 시도한 것들이 여기에

enter image description here을 받고있어 오류입니다.

처음에는 웹 구성 파일에 위치 요소를 추가하는 것이 효과적 일 것이라고 생각했지만 이동하지 않았습니다 (물론), http 핸들러를 등록하지 않았습니다. 그리고 그것은 오류를 던지고 있습니다.

<location path="activityreport.aspx"> 
    <system.web> 
     <httpHandlers> 
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> 
     </httpHandlers> 
    </system.web> 
</location> 

다음 나는 하위 디렉토리에 영문 파일을 이동하고 그것에게 그것의 '자신의 웹 설정 파일이 HTTP 처리기를 등록을 줄 것이라고 생각하지만 didnt가 스틱 중 하나

<system.web> 
     <httpHandlers> 
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> 
     </httpHandlers> 
    </system.web> 

하나가 내가 그 일을 시도 했어,하지만 그 모든 하위 폴더가 속성을 상속하지 않을 거라고 확신하지 않습니다.

위치 경로를 "."로 설정하십시오.

 <location path="."> 
    <system.web> 
     <httpHandlers> 
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> 
     </httpHandlers> 
    </system.web> 
</location> 

내 질문이 있습니다 ...이 HTTP 처리기를 프로그래밍 방식으로 등록하는 방법이 있습니까? 또는 웹 구성 설정에 문제가있는 것 같습니다.

답변

1

작동하는 솔루션으로 인해 웹 루트 아래 또는 그 아래에있는 Reserved.ReportViewerWebControl.axd에 대한 모든 요청에 ​​대해 처리기가 호출됩니다. 당신이 당신의 핸들러를 분리 할 경우에만 경로의 시작/A로의 Web.config에 항목을 추가, 루트에서 액세스 할 수 :

<system.web> 
    <httpHandlers> 
     <add path="/Reserved.ReportViewerWebControl.axd" 
      verb="*" 
      type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
      validate="false"/> 
    </httpHandlers> 
</system.web> 

당신은 하나의 하위 디렉토리에 모든 것을 분리하려면

path="Reserved.ReportViewerWebControl.axd" 

이 핸들러가 01에 대한 요청에 대해 호출되는 원인이됩니다 경로와 핸들러를 등록

<system.web> 
    <httpHandlers> 
     <add path="/mysubdir/Reserved.ReportViewerWebControl.axd" 
      verb="*" 
      type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
      validate="false"/> 
    </httpHandlers> 
</system.web> 

로 지정 : 다음과 같이 Web.config의에 항목을 추가, 사용 된 하위 디렉터리에 관계없이. IIS6에서

편집
, 당신은 Reserved.ReportViewerWebControl.axd은 아래 그림과 같이 바로 핸들러에 대한 참조를 추가, 루트에서 사용할 수있게합니다. 경로 요소의 시작 부분에 /를 추가해야합니다.

<system.web> 
    <httpHandlers> 
     <add verb="*" 
       path="/Reserved.ReportViewerWebControl.axd" 
       type="..." validate="false" /> 
    </httpHandlers> 
</system.web> 

이 접근 방식을 가지고 당신이 Could not load type 'Microsoft.Reporting.WebForms.HttpHandler' 오류가 발생하는 경우, 다음 (당신은 또한 GAC에 해당 어셈블리를 추가 할 수 있습니다)에 web.config에 \ 어셈블리를 컴파일에 다음과 같은 추가하려고 :

<system.web> 
    <compilation debug="true"> 
     <assemblies> 
      <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
     </assemblies> 
    </compilation> 
    ... 
    <httpHandlers> 
    ... 
    </httpHandlers> 
</system.web> 
+0

나는 당신을 힘들게 노력할 것이지만, 슬프게도 이것이 효과가 없었고, 정말 좋겠다. – Odnxe

+0

@Odnxe 작동하지 않는 것에 대해 자세히 설명해 주시겠습니까? 어떤 방법을 시도 했습니까? 또한, 어떤 버전의 IIS를 사용하고 있습니까? IIS 7.5/ASP.NET 4.0/Classic 관리 파이프 라인으로 테스트 한 결과,이 답변에서 설명한대로 작동하는 것으로 보입니다. – rsbarro

+0

IIS v6 및 asp.net 2.0입니다. 나는 두 가지 방법을 시도했다. (나는 aspx 페이지를 가지고있다.) aspx 페이지를 가지고있다. (테스트 용으로) 서브 디렉토리에있다. – Odnxe

0

그냥 참고 사항 : 우리의 생산 환경에서만 Could not load type 'Microsoft.Reporting.WebForms.HttpHandler'을 얻고있었습니다. <system.web> 아래 assemblies 섹션에 어셈블리를 추가했지만 여전히 작동하지 않습니다. 그런 다음이 글을 기반으로 컴퓨터에서 GAC (전역 어셈블리 캐시)를 확인했습니다. 해당 컴퓨터에서 Microsoft.ReportViewer.WebForms의 버전이 8.0.0.0이 아닌 9.0.0.0 이었음을 나타냅니다. 그 라인을 web.config에서 업데이트했는데 잘 작동합니다. 감사!

관련 문제