2

VB.NET、SSRS、および SQL Server 2008 R2 を使用して Visual Studio 2010 で開発された ASP.NET 4.0 アプリケーションがあります。アプリには、ユーザーからの入力を収集するページがあり、それをパラメーターとして使用して SQL Server データベースからデータを取得し、それを SSRS レポートに入れてから PDF ファイルに変換します。これはすべて私の開発マシンでは正常に機能しますが、特に ServerReport エンジンに関して何かをしようとすると、サーバー上でエラーが発生します。開発マシンからレポートを開くことができるだけでなく、レポート マネージャーで直接開くこともできます。運用マシンからレポートを開こうとすると、レポートが開かず、ページの左下にある黄色の三角形でエラーが示され、ダブルクリックするとこのメッセージが表示されます。

`Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMDTDF; BRI/1; .NET4.0C; InfoPath.3; .NET4.0E)
Timestamp: Wed, 12 Dec 2012 20:03:54 UTC

Message: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500
ScriptResource.axd                                                              Line: 2
Code: 0                                                                     Char: 74741
URI: http://intranet/webapps/RecordedOnlyIncidents/ScriptResource.axd?d=GnweTchBv7S3iPh-J2y96yey3C3_pzddkEeS0GIM0GHz6A1wrAToLVysD0C0nmS_sugidnIpUa9dt3MXUvPZgTV3kdSrhNnjjikolQ4t_qbyruxeky4MDgxR-klgMjZP0&t=ffffffffbad362a4`

運用マシンは Windows 2003 と IIS 6 を実行します。開発マシンは Window 7 と IIS 7 を実行します。これらのマシンは両方とも、Windows Server 2008 R2 Standard を実行する VMware 仮想サーバー上にある SQL Server とレポート サーバーにアクセスします。

アプリが実行されているサーバーのイベント ログを調べましたが、実際のエラーが何であるかについての手がかりは見つかりませんでした。C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\LogFiles にあるレポート サーバーのログ ファイルも確認しました。開発マシンでアプリを実行すると、レポートが開き、次の行がログに追加されます。 /RecordedOnlyIncidents/Reports/AllIncidentsWithParameters')". 次に、開発マシンでコードを変更して無効なパスを指定すると、エラーが発生するようになり、エラーを指定するエントリが残ります。"library!ReportServer_0-30!1674!11/27/2012-18:30:19:: e エラー: Microsoft.ReportingServices.Diagnostics.Utilities をスローしています。InvalidItemPathException: 、Microsoft.ReportingServices.Diagnostics.Utilities.InvalidItemPathException: アイテム '/ReportViewer.aspx?/RecordedOnlyIncidents/Reports/AllIncidentsWithParameters' のパスが無効です。フル パスの長さは 260 文字未満にする必要があります。その他の制限が適用されます。レポート サーバーがネイティブ モードの場合、パスはスラッシュで始まる必要があります。」レポート サーバーにアクセスします。

私のコードは以下の通りです:

`Dim r = New ServerReport
r.ReportServerUrl = New Uri("http://vm-intranet/ReportServer")
r.ReportPath = "/RecordedOnlyIncidents/Reports/AllIncidentsWithParameters"
Dim EmployeeNumber As String = IIf(txtSearchEmployeeNumber.Text = "", Nothing, txtSearchEmployeeNumber.Text)
Dim IncidentType As String = IIf(ddlSearchIncidentType.SelectedItem.Text = "", Nothing, ddlSearchIncidentType.SelectedItem.Text)
Dim BeginningDate As String = IIf(txtBeginningDate.Text = "", Nothing, txtBeginningDate.Text)
Dim EndingDate As String = IIf(txtEndingDate.Text = "", Nothing, txtEndingDate.Text)
Dim parmEmpNumEmployeeNumber As New ReportParameter("EmployeeNumber", EmployeeNumber)
Dim parmIncidentType As New ReportParameter("IncidentType", IncidentType)
Dim parmBeginningDate As New ReportParameter("BeginningDate", BeginningDate)
Dim parmEndingDate As New ReportParameter("EndingDate", EndingDate)
Dim parameters(3) As ReportParameter
parameters(0) = parmEmpNumEmployeeNumber
parameters(1) = parmIncidentType
parameters(2) = parmBeginningDate
parameters(3) = parmEndingDate
r.SetParameters(parameters)
Dim warnings As Warning() = Nothing
Dim streamids As String() = Nothing
Dim mimeType As String = Nothing
Dim encoding As String = Nothing
Dim extension As String = Nothing
Dim reportOutput As Byte() = r.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
Dim path As String = System.AppDomain.CurrentDomain.BaseDirectory
Dim stream As New IO.FileStream(path & "/MyReport.pdf", IO.FileMode.Create)
IO.FileMode.Create)
stream.Write(reportOutput, 0, reportOutput.Length)
stream.Close()
Dim Script As String = "<script type='text/javascript'> win=window.open("""",""_blank"",""resizable=Yes,height=600"");win=win.document;win.write(""<style>body{margin:0px;}</style>"");win.write(""<title> Incidents Report</title>"");win.write(""<iframe src='MyReport.pdf' style='width:100%;height:100%;'></iframe>"");</script>"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "OpenReport", Script, False)`

エラーは次の行で発生します。

`r.SetParameters(parameters)`

ただし、パラメーターを取らないレポートを使用してみましたが、次の行でエラーが発生します。

`Dim reportOutput As Byte() = r.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)`

どんな提案でも大歓迎です。

4

2 に答える 2

0

答えが見つかりました。間違ったバージョンの Report Viewer がサーバーにインストールされていました。

于 2012-12-20T14:34:12.030 に答える
0

正しい拡張パラメーターを渡さないでください。また、Web サイトのルート フォルダーに対する書き込み権限があるかどうかも確認してください。

次のようなことを行いました。

ReportViewer1.ServerReport.Render(exportFormat, Nothing, mimeType, encoding, exportFormat, streams, warnings)
于 2012-12-13T00:38:56.273 に答える