지원하는 응용 프로그램에서 문제를 해결하려고합니다. 코드를 작성하지 않았습니다. 이 코드는 SSRS 보고서를 받아서 pdf 형식으로 렌더링합니다. 사용자는 제목에 표시된 오류를 산발적으로보고 있습니다. 운이 없거나 오류가 발생하는 이유는 없습니다 (특정 보고서가 한 번 실행되어 다음 번에 오류가 발생 함). 코드는 다음과 같습니다.ASP.net의 HttpRequest 최대 길이 초과 문제
Public Sub OpenReport()
Dim MyParms As New Generic.List(Of ReportParameter)
Dim mimeType As String = Nothing
Dim encoding As String = Nothing
Dim extension As String = Nothing
Dim deviceInfo As String = Nothing
Dim streamids() As String = Nothing
Dim warnings As Microsoft.Reporting.WebForms.Warning() = Nothing
Dim bytes() As Byte
Dim format As String = "PDF" ''#to open the report in pdf; report viewer invisible
Try
If dropReports.SelectedItem.Value = "1" Then
If Session("IsBDAP") = True Then
MyParms.Add(New ReportParameter("SCAId", dropSCA.SelectedItem.Value, False))
Else
MyParms.Add(New ReportParameter("SCAId", Server.UrlEncode(Session("SCAId")), False))
End If
MyParms.Add(New ReportParameter("ProviderId", dropProvider.SelectedItem.Value, False))
If dropVisit.Visible = True Then
MyParms.Add(New ReportParameter("VisitId", dropVisit.SelectedItem.Value, False))
End If
MyParms.Add(New ReportParameter("FY", dropContractFY.SelectedItem.Value, False))
ReportViewer1.ProcessingMode = ProcessingMode.Remote
ReportViewer1.ServerReport.ReportServerUrl = New Uri(System.Configuration.ConfigurationManager.AppSettings("ReportServerURI"))
ReportViewer1.ServerReport.ReportPath = Session("ReportsFolder") & "MReport"
ReportViewer1.ServerReport.ReportServerCredentials = New MyReportServerCredentials()
ReportViewer1.ServerReport.SetParameters(MyParms)
''#Code to convert the report to pdf
deviceInfo = "<DeviceInfo>" + "<SimplePageHeaders>True</SimplePageHeaders>" + "</DeviceInfo>"
bytes = ReportViewer1.ServerReport.Render(format, deviceInfo, mimeType, encoding, extension, streamids, warnings)
Dim size As Integer = bytes.Length
ReportViewer1.ServerReport.Refresh()
Response.Buffer = True
Response.Clear()
Response.ContentType = mimeType
Response.AddHeader("content-disposition", "attachment; filename=MReport." + extension)
Response.BinaryWrite(bytes)
ElseIf dropReports.SelectedItem.Value = "2" Then
If Session("IsBDAP") = True Then
MyParms.Add(New ReportParameter("SCAId", dropSCA.SelectedItem.Value, False))
Else
MyParms.Add(New ReportParameter("SCAId", Server.UrlEncode(Session("SCAId")), False))
End If
MyParms.Add(New ReportParameter("ProviderId", dropProvider.SelectedItem.Value, False))
If dropVisit.Visible = True Then
MyParms.Add(New ReportParameter("FollowUpVisitId", dropVisit.SelectedItem.Value, False))
End If
MyParms.Add(New ReportParameter("FY", dropContractFY.SelectedItem.Value, False))
ReportViewer1.ProcessingMode = ProcessingMode.Remote
ReportViewer1.ServerReport.ReportServerUrl = New Uri(System.Configuration.ConfigurationManager.AppSettings("ReportServerURI"))
ReportViewer1.ServerReport.ReportPath = Session("ReportsFolder") & "FReport"
ReportViewer1.ServerReport.ReportServerCredentials = New MyReportServerCredentials()
ReportViewer1.ServerReport.SetParameters(MyParms)
''#Code to convert the report to pdf
deviceInfo = "<DeviceInfo>" + "<SimplePageHeaders>True</SimplePageHeaders>" + "</DeviceInfo>"
bytes = ReportViewer1.ServerReport.Render(format, deviceInfo, mimeType, encoding, extension, streamids, warnings)
ReportViewer1.ServerReport.Refresh()
Response.Buffer = True
Response.Clear()
Response.ContentType = mimeType
Response.AddHeader("content-disposition", "attachment; filename=FReport." + extension)
Response.BinaryWrite(bytes)
기본 길이 제한은 4MB입니다. 그 자체로는 350K가 넘는 보고서는 없습니다. 이 문제가 캐싱 문제로 인해 발생할 수 있는지 궁금합니다. 저는 전문가가 아니므로 문제를 해결하는 최선의 방법에 대한 지침이 필요합니다. 또한 문제가 왜 발생하는지 이해하고 싶습니다. 스 니펫에는 2 개의 보고서 만 표시되며 전체 하위 보고서에는 약 30 개 이상의 보고서가 있습니다.
도움 주셔서 감사합니다.
편집 - 제안 된 솔루션을 사용해 보았지만 도움이되지 않았습니다. (나는 또한 Fiddler 경로를 시도했지만 눈부신 것도 보지 못했습니다.) 나는 그것이 명확히하는 것이 가장 좋을 것이라고 생각했다. 보고서는 잠시 동안 정상적으로 실행되지만 응용 프로그램이 결국 오류를 표시 할 때까지 실행 시간이 서서히 느려집니다. 이것이 문제에 관해 밝혀 줍니까?
TIA
도움을 주셔서 감사합니다.하지만 왜 그런지 알고 싶습니다. 보고서 중 어느 것도 4MB 한도를 초과하지 않았기 때문에 (또는 심지어 가까이에), 더 큰 문제가 있다고 가정 할 수 있습니다. 최후의 수단으로 제안을 구현하고 답변에 대한 크레딧을 줄 것입니다. –
나의 유일한 제안은 Fiddler 또는 그와 동등한 것을 사용하고 실제 크기와 부풀어 오를 수있는 것을보기 위해 응답을 조사하는 것입니다. – derek