I migrated an installation of Reporting Services 2005 running on Windows Server 2003 Std. 32Bit to a new server running Windows Server 2008 Enterprise 32Bit (not 2008 R2) with SQL Server and Reporting Services 2012.
Everything worked fine until we tried to run the reports from our application which has a custom class that run the reports. They work fine in 2005 but won't work in 2012.
The specific error is:
Client found response content type of '', but expected 'text/xml'.
The error is thrown in the method:
[System.Web.Services.Protocols.SoapHeaderAttribute("SessionHeaderValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)]
[System.Web.Services.Protocols.SoapHeaderAttribute("ServerInfoHeaderValue", Direction=System.Web.Services.Protocols.SoapHeaderDirection.Out)]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sqlserver/2003/12/reporting/reportingservices/Render" +
"", RequestNamespace="http://schemas.microsoft.com/sqlserver/2003/12/reporting/reportingservices", ResponseNamespace="http://schemas.microsoft.com/sqlserver/2003/12/reporting/reportingservices", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("Result", DataType="base64Binary")]
public System.Byte[] Render(string Report, string Format, string HistoryID, string DeviceInfo, ParameterValue[] Parameters, DataSourceCredentials[] Credentials, string ShowHideToggle, out string Encoding, out string MimeType, out ParameterValue[] ParametersUsed, out Warning[] Warnings, out string[] StreamIds) {
object[] results = this.Invoke("Render", new object[] {
Report,
Format,
HistoryID,
DeviceInfo,
Parameters,
Credentials,
ShowHideToggle});
Encoding = ((string)(results[1]));
MimeType = ((string)(results[2]));
ParametersUsed = ((ParameterValue[])(results[3]));
Warnings = ((Warning[])(results[4]));
StreamIds = ((string[])(results[5]));
return ((System.Byte[])(results[0]));
}
Again, this is working fine against the 2005 SSRS but not the 2012 SSRS.
Any ideas what might be the issue? Any help would be appreciated.
Thanks.
Jose
Best Answer
Make sure your application/web server has an entry in the Report Server roles of new server. If so, you may want to delete it and add it again. For example, in Report Manager of our SSRS server, on the security for the "Home" folder (at https://your.reporting.services.server/Reports/Pages/Folder.aspx?ItemPath=%2f&SelectedTabId=PropertiesTab), we have an entry for our web server:
Review how you are providing the credentials from application/web server to SSRS server. We use a custom class:
Public Class ReportViewerServerConnection Implements IReportServerConnection2
... and an entry in web.config:
Try SQL Server Profiler on the SSRS server to see what, if anything, is happening in the ReportServer database and data source databases. If nothing is happening in the database, then there must be a network, permission, or SSL issue.
Check for SSL issues. (Fiddler?)
In your application, drop the reference to the SSRS web service, and add it again to the new server.
Check the Reporting Services log file; for example "C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\LogFiles".