2

Windows Server 2003 Std で実行されている Reporting Services 2005 のインストールを移行しました。32 ビットから、Windows Server 2008 Enterprise 32 ビット (2008 R2 ではない) と SQL Server および Reporting Services 2012 を実行している新しいサーバーへ。

レポートを実行するカスタム クラスを持つアプリケーションからレポートを実行しようとするまで、すべてが正常に機能していました。2005 年には正常に動作しますが、2012 年には動作しません。

具体的なエラーは次のとおりです。

クライアントは '' の応答コンテンツ タイプを見つけましたが、'text/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 に対しては機能していません。

問題の可能性があるアイデアはありますか? どんな助けでも大歓迎です。

ありがとう。ホセ

4

2 に答える 2

2
  1. アプリケーション/Web サーバーに、新しいサーバーのレポート サーバー ロールのエントリがあることを確認します。その場合は、削除して再度追加することをお勧めします。たとえば、SSRS サーバーのレポート マネージャーでは、"ホーム" フォルダー ( https://your.reporting.services.server/Reports/Pages/Folder.aspx?ItemPath=%2f&SelectedTabId=PropertiesTab ) のセキュリティについて、 Web サーバーのエントリがあります。

    OURDOMAIN\WEBSERVERNAME$   Public
    
  2. アプリケーション/Web サーバーから 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. SSRS サーバーで SQL Server Profiler を試して、ReportServer データベースとデータ ソース データベースで何が起こっているかを確認してください。データベースで何も起きていない場合は、ネットワーク、権限、または SSL に問題があるはずです。

  2. SSL の問題を確認します。(フィドラー?)

  3. アプリケーションで、SSRS Web サービスへの参照を削除し、新しいサーバーに再度追加します。

  4. Reporting Services のログ ファイルを確認します。たとえば、「C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\LogFiles」などです。

于 2012-09-24T17:40:28.573 に答える
0

クライアントアプリで使用されているReportServerURL設定が正しいレポートサーバーのURLを指していることを確認してください。次のようなURLを指していると思います。

http://<reportserver>/reportserver/

または、直接Webサービスにアクセスします。

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

また、クライアントアプリケーションで使用しているReportViewerコントロールは、新しいレポート機能を処理するように設計されていないため、アップグレードする必要がある場合があります。

于 2012-10-01T14:41:31.127 に答える