分享

RDLC从IIS中中运行时报 RSClientController 未定义

 和帅书馆 2014-03-08

环境:win7 + iis7 + vs2008


新建的网站应用如果不是从iis上运行,RDLC报表一切正常,但如果网站是从iis上运行的时候,提示RSClientController 未定义 这样的错误, 很多,没有一一记录.

经查,原来网页中引用很多类似Reserved.ReportViewerWebControl.axd?OpType=Resource& Version=9.0.30729.1& Name=Microsoft.Reporting.WebForms.Scripts.ReportViewer.js的URL,用来载入控件所需的JS、图档等等,但全部传回HTTP 404,以找不到档案收场,看来是Reserved.ReportViewerWebControl.axd这个HttpHandler没被正确地注册所 致。


从网上查资料得知,vs 2008在你拖入ReportViewer时会自动在web.config的system.web中加入HttpHandler Mapping:

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


但问题来了,在IIS7上ASP.NET有两种执行模式,Classic Mode及Integrated Mode,web.config里HttpHandler等设定也变成有两区,system.web是给Classic Mode用的,system.webServer是给Integrated Mode用的。

VS2008自 动加入HttpHandler设定只改了system.web区(大概是因为IIS7比VS2008晚发展),却没一并在system.webServer区新增设定,而我的WebApp设定是用Integrated Mode执行,这下子等于没注册Reserved.ReportViewerWebControl.axd,自然以HTTP 404收场。

system.webServer加入以下的HttpHandler设定:

      <add name="Reserved-ReportViewerWebControl-axd" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" resourceType="Unspecified" preCondition="integratedMode" />


问题解决




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多