s-s-rS 2008 - reportservices.asmx 与旧版应用程序不兼容
Posted
技术标签:
【中文标题】s-s-rS 2008 - reportservices.asmx 与旧版应用程序不兼容【英文标题】:s-s-rS 2008 - reportservices.asmx not compatible with legacy app 【发布时间】:2011-10-15 17:07:08 【问题描述】:我们获得了一个大约在 2003 年编写的应用程序。该应用程序的一部分使用 SQL Server Reporting Services 来生成 PDF 报告。基本上在应用程序内,用户单击一个按钮,修改参数(开始/结束日期),然后以 PDF 格式传回(我认为)报告,以便可以打印。伟大的。在 SQL 2005 中运行良好。
但是,SQL 2008 完全是另一只野兽。我可以从 Web 界面 (http://127.0.0.1/reports/...) 运行相同的报告。但是网址不起作用。我四处搜寻,发现该应用程序正在向 127.0.0.1/reportserver/reportservice.asmx 发送呼叫。现在它返回一个空字符串而不是 XML 文档。
据说有一个名为 reportserver/reportexecution2005.asmx 的 2005 兼容版本,但这会产生一个奇怪的 SOAP 错误。 “System.Web.Services.Protocols.SoapException:服务器无法识别 HTTP 标头 SOAPAction 的值:http://schemas.microsoft.com/sqlserver/2003/12/reportingservices/Render。在 System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouterRequest() ....
我现在注意到,当我尝试使用 Internet Explorer 并浏览到 127.0.0.1/reportserver/reportservice.asmx 时,我得到了登录提示,而 s-s-rS 2005 则不是这样。我还注意到,如果我浏览到报告服务器/reportexecution2005.asmx 它返回一个 XML 页面,该页面看起来与 s-s-rS 2005 中返回的内容非常相似。
很明显我错过了一些东西。我认为由于该应用程序是不久前创建的,因此我应该使用 SQL2000 版本,即 127.0.0.1/reportserver/reportservice.asmx。但我认为现在存在身份验证错误。
无论如何。我一无所知。有人有什么想法吗?谢谢。 我们没有应用程序的源代码,但我可以修改连接参数,比如我可以要求它查询 ReportServiceXXX.asmx 而不是 ReportService.asmx
【问题讨论】:
【参考方案1】:您非常接近看到问题所在。如果您仔细查看 ReportExecution2005.asmx 中的 XML,您会发现它位于 Soap12 中。您的错误消息显示使用方法 System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouterRequest 进行了调用,该方法正在发送 Soap11 消息。我也遇到了同样的问题,但是还没解决。
我的两个选项是添加到 SQL 2008 报告服务的绑定以接受 Soap11,或者修改我的代码以发送 Soap12。我希望在 SQL Server 中进行简单的配置更改,但还没有找到。
【讨论】:
以上是关于s-s-rS 2008 - reportservices.asmx 与旧版应用程序不兼容的主要内容,如果未能解决你的问题,请参考以下文章