SSRS 2008 - reportservices.asmx与旧版应用程序不兼容

时间:2011-10-15 17:07:08

标签: sql reporting-services ssrs-2008 reportingservices-2005

我们已经获得了大约2003年编写的应用程序。该应用程序的一部分使用SQL Server Reporting Services生成报告的PDF。基本上在应用程序中,用户单击按钮,修改参数(开始/结束日期),并以PDF格式传回(我认为)报告,以便可以打印。大。在SQL 2005中正常工作。

然而,SQL 2008完全是另一个野兽。我可以从Web界面(http://127.0.0.1/reports / ...)运行相同的报告。但URL不起作用。我挖了一遍,发现应用程序正在向127.0.0.1/reportserver/reportservice.asmx发送一个电话。现在它返回一个空字符串而不是XML文档。

据说有一个名为reportserver / reportexecution2005.asmx的2005兼容版本,但它会产生一个令人讨厌的SOAP错误。 “System.Web.Services.Protocols.SoapException:Server无法识别HTTP Header 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时,我得到一个登录提示,而SSRS 2005则不是这样。我还注意到,如果我浏览到reportserver /reportexecution2005.asmx它返回一个XML页面,它看起来与SSRS 2005中返回的内容大致相似。

显然我错过了一些东西。我认为既然应用程序是在不久前创建的,我应该使用的是SQL2000版本127.0.0.1/reportserver/reportservice.asmx。但我认为现在存在身份验证错误。

反正。我很无能为力。有人有什么想法?谢谢。
我们没有应用程序的源代码,但我可以修改连接参数,就像我可以要求它查询ReportServiceXXX.asmx而不是ReportService.asmx

1 个答案:

答案 0 :(得分:1)

你非常接近看到这个问题。如果仔细查看ReportExecution2005.asmx中的XML,您会发现它位于Soap12中。您的错误消息显示使用方法System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouterRequest进行调用,该方法正在发送Soap11消息。我遇到了同样的问题,但还没有解决。

我的两个选择是添加绑定到SQL 2008报表服务以接受Soap11或修改我的代码以发送Soap12。我希望在SQL服务器中进行简单的配置更改,但还没有找到它。