报表查看器Web控件版本10尽管设置正确,但仍会出现错误

时间:2011-11-21 17:52:00

标签: reporting-services iis-7.5 reportviewer report-viewer2010

报告已部署并正常运行,并在报告管理器中进行了验证。

我的应用程序是一个MVC2应用程序,我的报告在自己的aspx页面上。此页面与报表查看器控件的版本8一起使用,但我们移动到新服务器,升级了sql server,并且正在尝试更新我们的网站以匹配。

服务器是带有IIS 7.5的Windows Server 2008。

我正在测试chrome和IE 9。

尽管我付出了最大努力,但仍然会收到此错误:

  

报告查看器配置错误

     

报表查看器Web控件HTTP处理程序尚未注册   应用程序的web.config文件。将<add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />添加到system.web / httpHandlers   web.config文件的一部分,或将<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" />添加到system.webServer / handlers   Internet Information Services 7或更高版本的部分。

但是,我已经这样做了。事实上,我甚至从MSDN中读到了这个:

  

要在集成模式下使用IIS 7.0,必须删除system.web / httpHandlers中的HTTP处理程序。否则,IIS将不会运行该应用程序,而是会显示错误消息。

为了安全起见,我尝试了直接将处理程序添加到IIS中的组合,只是我的配置中的Web服务器http处理程序,只是配置中的http处理程序,以及两者。

让我们从我的web.config

开始
<configuration
  <system.web>
    <httpRuntime maxQueryStringLength="4096" />
    <compilation targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
        <buildProviders>
            <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </buildProviders>
    </compilation>
  </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>
</configuration>

我有程序集,构建提供程序和处理程序。还有什么可能是错的?

3 个答案:

答案 0 :(得分:6)

我找到了一个快速而又脏的解决方法 - 在您的网络配置中添加以下内容:

<location path="Reserved.ReportViewerWebControl.axd">
<system.web>
  <authorization>
    <allow users="*" />
  </authorization>
</system.web>

我在fiddler中看到,由于某种原因,当页面请求Reserved.ReportViewerWebControl.axd而不是获取HTTP 200响应服务器时会发送302 - 移动到login.aspx?returnurl =“Reserved.ReportViewerWebControl.axd。所以允许所有用户处理程序路径解决了这个问题。

答案 1 :(得分:1)

我认为它在IIS7上的ReportViewer呈现问题 我已经将我的reportviewer句柄手动映射到IIS7,如下所示:

•打开Internet信息服务(IIS)管理器并选择您的Web应用程序。

•在IIS区域下,双击“处理程序映射”图标。

•在右侧的“操作”窗格中,单击“添加托管处理程序”。

•在“添加托管处理程序”对话框中,输入以下内容:

请求路径:Reserved.ReportViewerWebControl.axd

键入:Microsoft.Reporting.WebForms.HttpHandler

名称:保留-ReportViewerWebControl-axd

•单击“确定”。

也通过添加

更改了网络配置

    
             

我的还是不行。我认为上述解决方案可以帮助其他人。

答案 2 :(得分:-1)

我通过从asp.net项目中删除不需要的mvc程序集来尝试这一点。因此,简单的解决方案是从Web项目中的Bin文件夹中删除 WebMatrix。*。dll ,因为它属于mvc框架。