0

SSRS에서 보고서를 쿼리하여 HTTPWebRequest 및 HTTPWebResponse를 사용하여 스트림을 가져 와서 PDF로 파일로 저장하는 SSRS Bulk 리포터를 만들었습니다.파일에 GetResponseStream이 길어지고 있습니다.

그러나 고객이 오래 걸릴 것이라고 불평했습니다. 나는 그것을 시험했으며,이 기능은 + 15.5 초가 걸렸다. GetResponseStream과 파일 작성기 사이에 휴식 시간을두고 다음 부분으로 이동하기 전에 약 3 초 동안 기다리면 총 시간에서 4 초가 면도됩니다.

누구나 설명 할 수 있습니까? 아니면 조금 더 빨리 조언을 해줄 수 있습니까?

Public Function ExportReport(ByVal QueryStringParameters As String, ByVal FileName As String) As String 
    Dim PDFName As String = ReportFolderPath & FileName & ".pdf" 
    'Create a http request or connecting to the report server. 
    Dim ReportHTTPRequest As HttpWebRequest = Nothing 
    'Create a http response to catch the data stream returned from the http request. 
    Dim ReportHTTPResponse As HttpWebResponse = Nothing 
    'Create a stream to read the binary data from the http reponse. 
    Dim ReportStream As Stream = Nothing 
    Dim ReportFileStream As FileStream = Nothing 
    'Create an array of bytes to get the binary data from the stream. 
    Dim ReportBytes As Byte() 
    Dim ReportBuffer As Integer = 204800 
    Dim ReportBytesRead As Integer = 0 


    'Create a webrequest to get the report with all the report parameters included. 
    ReportHTTPRequest = WebRequest.Create(ReportServerURL & QueryStringParameters) 
    ReportHTTPRequest.Credentials = CredentialCache.DefaultCredentials 
    'Get the response from the request. 

    ReportHTTPResponse = ReportHTTPRequest.GetResponse() 

    'Read the binary stream from the http response. 
    ReportStream = ReportHTTPResponse.GetResponseStream() 

    ReportBytes = New Byte(ReportBuffer) {} 
    ReportBytesRead = ReportStream.Read(ReportBytes, 0, ReportBuffer) 
    ReportFileStream = New FileStream(PDFName, FileMode.Create) 
    Do While ReportStream.CanRead And ReportBytesRead > 0 
     ReportFileStream.Write(ReportBytes, 0, ReportBytesRead) 
     ReportBytesRead = ReportStream.Read(ReportBytes, 0, ReportBuffer) 
    Loop 

    ReportHTTPResponse.Close() 
    ReportStream.Close() 
    ReportFileStream.Close() 

    Return PDFName 
End Function 

답변

0

나를 위해 일한 마법 일, 32768

의 버퍼 크기를 시도 :

는 기능입니다