2

Windows Server 2003 Standard에서 실행되는 Reporting Services 2005 설치를 마이그레이션했습니다. SQL Server 및 Reporting Services 2012를 사용하는 Windows Server 2008 Enterprise 32Bit (2008 R2 아님)을 실행하는 새 서버로 업그레이드하십시오.SSRS 2012에서 C# 코드로 생성 된 보고서 반환 클라이언트가 응답 콘텐츠 유형 ''을 (를) 찾았지만 'text/xml'이 필요함

보고서를 실행하는 사용자 지정 클래스가있는 응용 프로그램에서 보고서를 실행하려고 시도 할 때까지 모든 것이 올바르게 작동했습니다 . 그들은 2005 년에 잘 작동하지만, 2012 년

에서 작동하지 않습니다 특정 오류는 다음과 같습니다

클라이언트 ',하지만 예상'텍스트/XML '의 응답 콘텐츠 형식을 발견했다.

이 오류는 방법에서 발생합니다 :

 [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])); 
     } 

가 다시이 2005 SSRS 아니라 2012 SSRS에 대한 잘 작동한다.

어떤 아이디어가 문제 일 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.

감사합니다. 호세

답변

2
  1. 응용 프로그램/웹 서버가 새 서버의 보고서 서버 역할에 항목이 있는지 확인합니다. 그렇다면 삭제하고 다시 추가 할 수 있습니다.

    OURDOMAIN\WEBSERVERNAME$ Public 
    
  2. 검토 당신의 자격 증명을 제공하는 방법을 예를 들어, (https://your.reporting.services.server/Reports/Pages/Folder.aspx?ItemPath=%2f&SelectedTabId=PropertiesTab에서) "홈"폴더에 대한 보안에 대한 우리의 SSRS 서버의 보고서 관리자에서, 우리는 우리의 웹 서버에 대한 항목이 응용 프로그램/웹 서버에서 SSRS 서버로.

공공 클래스 ReportViewerServerConnection 구현합니다 IReportServerConnection2

Public ReadOnly Property ReportServerUrl() As System.Uri Implements Microsoft.Reporting.WebForms.IReportServerConnection.ReportServerUrl 
    Get 
     Return New Uri(System.Configuration.ConfigurationManager.AppSettings.Get("ReportServerUrl")) 
    End Get 
    End Property 

    Public ReadOnly Property Timeout() As Integer Implements Microsoft.Reporting.WebForms.IReportServerConnection.Timeout 
    Get 
     Return CInt(System.Configuration.ConfigurationManager.AppSettings.Get("ReportServerTimeout")) 
    End Get 
    End Property 

    Public ReadOnly Property Cookies() As System.Collections.Generic.IEnumerable(Of System.Net.Cookie) Implements Microsoft.Reporting.WebForms.IReportServerConnection2.Cookies 
    Get 
     Return Nothing 
    End Get 
    End Property 

    Public ReadOnly Property Headers() As System.Collections.Generic.IEnumerable(Of String) Implements Microsoft.Reporting.WebForms.IReportServerConnection2.Headers 
    Get 
     Return Nothing 
    End Get 
    End Property 

    Public Function GetFormsCredentials(ByRef authCookie As System.Net.Cookie, ByRef userName As String, ByRef password As String, ByRef authority As String) As Boolean Implements Microsoft.Reporting.WebForms.IReportServerCredentials.GetFormsCredentials 
    'Not using form credentials 
    authCookie = Nothing 
    userName = Nothing 
    password = Nothing 
    authority = Nothing 

    Return False 
    End Function 

    Public ReadOnly Property ImpersonationUser() As System.Security.Principal.WindowsIdentity Implements Microsoft.Reporting.WebForms.IReportServerCredentials.ImpersonationUser 
    Get 
     'Use the default windows user. Credentials will be 
     'provided by the NetworkCredentials property. 
     Return Nothing 
    End Get 
    End Property 

    Public ReadOnly Property NetworkCredentials() As System.Net.ICredentials Implements Microsoft.Reporting.WebForms.IReportServerCredentials.NetworkCredentials 
    Get 
     Return Net.CredentialCache.DefaultCredentials 
    End Get 
    End Property 
End Class 

...와의 Web.config의 항목 :

<configuration> 
    <appSettings> 

    <!-- magic value: http://msdn.microsoft.com/en-us/library/ms251661%28VS.90%29.aspx --> 
    <add key="ReportViewerServerConnection" value="Our.WebApplication.ReportViewerServerConnection, Our.WebApplication.Assembly" /> 
    </appSettings> 
</configuration> 
  1. 시도의 SQL 서버 우리는 사용자 정의 클래스를 사용 SSRS 서버의 프로파일 러는 ReportServer da에서 어떤 일이 일어나고 있는지 확인합니다. 데이터베이스 및 데이터 원본 데이터베이스 데이터베이스에서 아무 것도 일어나지 않으면 네트워크, 사용 권한 또는 SSL 문제가 있어야합니다.

  2. SSL 문제가 있는지 확인하십시오. (Fiddler?)

  3. 응용 프로그램에서 SSRS 웹 서비스에 대한 참조를 삭제하고 새 서버에 다시 추가하십시오.

  4. Reporting Services 로그 파일을 확인하십시오. 예 : "C : \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ LogFiles".

+0

감사합니다. @leqid하지만 제안 사항 중 아무 것도 작동하지 않았습니다. – JRGuay

+0

쥐! SQL Server Profiler를 사용하여 데이터베이스에서 무엇이 일어나고 있습니까? – leqid

+0

문제는 실제로 MS가 이전 웹 서비스의 기능을 SQL 2008에서 시작하는 두 가지 기능으로 분리하는 방법입니다. 솔루션을 찾았지만 곧 게시 할 예정입니다. – JRGuay

0

클라이언트 응용 프로그램에서 사용되는 ReportServerURL 설정이 올바른 보고서 서버 URL을 가리키고 있는지 확인하십시오.직접 웹 서비스에 선택적으로

http://<reportserver>/reportserver/ 

나 :

http://<reportserver>/reportserver/ReportService2005.asmx? 

당신은 또한 당신의 클라이언트 응용 프로그램에서 사용하고있는 ReportViewer 컨트롤을 업그레이드해야합니다 나는 같은 URL을 가리키는 될 기대 그것은 새로운 보고서 기능을 처리하도록 설계되지 않았기 때문입니다.

+0

Thanks @Christopher. ReportService2005.asmx 문제는 MS가 이전 웹 서비스의 기능을 다른 서비스로 분할했기 때문에 작동하지 않는다는 것입니다. – JRGuay