0

HTTPWebRequest と HTTPWebResponse を使用して SSRS からレポートをクエリし、ストリームを取得してファイルとして PDF に保存する SSRS Bulk レポーターを作成しました。

しかし、クライアントは、これには時間がかかると不満を漏らしています。私はそれをテストしましたが、この機能には +-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
4

1 に答える 1

0

私のために働いた魔法のこと、32768のバッファサイズを試してください

于 2012-12-28T17:56:19.700 に答える