2017-07-13 101 views
1

SSRS報告託管在啓用了Windows身份驗證的Azure中的虛擬機上。我可以通過提供憑證在瀏覽器中打開url來下載PDF,但是它不能與代碼一起使用。我可以下載PDF,但它說已損壞。 當我點擊瀏覽器中的網址時,它下載的PDF格式大小爲900KB,但代碼相同,下載120kb並且說它已損壞。這是什麼安全問題,下載的字節更少?使用HTTPCLIENT從代碼下載的SSRS PDF報告已損壞

下面是示例代碼:

變種處理機=新HttpClientHandler {證書=新的NetworkCredential( 「用戶名」, 「口令」, 「結構域」)}; HttpClient client = new HttpClient(handler); HttpResponseMessage結果= client.PostAsync(requestConnection,content).Result; var responseData = result.Content.ReadAsByteArrayAsync()。結果;

+0

這是否幫助?或者,如果您需要更多信息,我可能會提供幫助。 – craigster

回答

1

如果你想一個SSRS報表導出爲PDF這裏是一些代碼,我用生成報告到MemoryStream,但你可以將它保存到文件,如果你想

所有變量結束「VAR」,並串

我希望這有助於你

      Dim ServerUrl As New Uri(ReportServerUrlVAR) 
          Dim ReportViewer1 As New ReportViewer 
          ReportViewer1.ServerReport.ReportServerUrl = ServerUrl 
          ReportViewer1.ServerReport.ReportPath = "/" & ReportsPathNameVAR & "/" & ReportNameVAR 
          ReportViewer1.ServerReport.ReportServerCredentials.NetworkCredentials = New Net.NetworkCredential(ReportServiceUserNameVAR, m_Datamanager.Settings.ReportServicePasswordVAR) 

          ReportViewer1.RefreshReport() 

          Dim mimeType As String = String.Empty 
          Dim encoding As String = String.Empty 
          Dim extension As String = String.Empty 
          Dim deviceInfo As String = String.Empty 
          Dim streamids As String() = Nothing 
          Dim warnings As Warning() = Nothing 
          Dim format As String = "PDF" 
          deviceInfo = "<DeviceInfo>" + "<SimplePageHeaders>True</SimplePageHeaders>" + "</DeviceInfo>" 
          Dim bytes As Byte() = ReportViewer1.ServerReport.Render(format, deviceInfo, mimeType, encoding, extension, streamids, warnings) 

          Dim ms As New MemoryStream(bytes) 

          'Create Email 
          Dim SmtpServer As New SmtpClient 
          Dim mail As New MailMessage 
          If EmailUserNameVAR <> String.Empty Then 
           SmtpServer.Credentials = New Net.NetworkCredential(EmailUserNameVAR, EmailPasswordVAR) 
          End If 
          SmtpServer.Port = EmailServerPortVAR 
          SmtpServer.Host = EmailServerVAR 
          mail = New MailMessage() 
          mail.From = New MailAddress(EmailFromAddressVAR) 
          mail.To.Add(m_EmailAddress) 
          Dim NewAttach As New Attachment(ms, ReportNameVAR & ".pdf") 
          mail.Attachments.Add(NewAttach) 
          mail.Subject = "Automatic Email Report: " & ReportNameVAR 
          mail.Body = "This message is an Automatic Email Report: " & ReportNameVAR & vbCrLf & "Please Check the Attached File." 
          SmtpServer.Send(mail) 
          Application.ExitThread() 
+0

這有幫助嗎?或者,如果您需要更多信息,我可能會提供幫助。 – craigster