다음 코드를 사용하여 SSRS 보고서에서 CSV 파일을 다운로드하려고합니다.SSRS 보고서에서 WebClient를 사용하여 CSV 파일 다운로드
Const URI As String = "https://blah.blah.com/blah/_layouts/15/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/blah/Production%20Reports/The_File.rdl&rs:format=csv"
Const DESTINATION As String = "C:\MyFile.csv"
Using myWebClient As WebClient = New WebClient()
With myWebClient
.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
.Headers.Add("Accept-Encoding", "gzip, deflate, sdch, br")
.Headers.Add("Accept-Language", "en-US,en;q=0.8")
.Headers.Add("Content-Disposition", "attachment; filename=%22The%5FFile.csv%22")
.Headers.Add("Content-Encoding", "gzip")
.Headers.Add("Content-Type", "text/csv")
.Headers.Add("Vary", "Accept-Encoding")
.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36")
.Headers.Add("Upgrade-Insecure-Requests", "1")
.Headers.Add("Referer", URI)
.Headers.Add("Cache-Control", "private")
.Credentials = New NetworkCredential("<my username>", "<my password>")
.DownloadFile(URI, DESTINATION)
End With
End Using
문제는 다운로드 된 파일이 csv 파일이 아니라는 것입니다. 텍스트 에디터에서 열면 어떤 종류의 인코딩처럼 보이는 "쓰레기"문자가 보입니다. "Accept-Encoding"헤더를 주석 처리하고 코드를 다시 실행하면 결과 HTML 페이지의 코드가 나타납니다. 필요한 csv 파일이 아닙니다. 누구든지 파일을 올바르게 다운로드 할 수있는 방법을 알고 있습니까? BTW, 내가 추가 한 헤더가 모두 필요한 것은 확실하지 않습니다.
Command = Render 부분을 추가했지만 csv 파일이 아닌 HTML 페이지 응답을 계속받습니다. – user2148983
추가하려는 모든 추가 헤더없이이 작업을 시도해 보셨습니까? 왜냐하면, 나는 매월 이와 비슷한 것을 운영하기 때문에이 모든 것을 추가 할 필요가 없습니다. –
내가 추가 한 모든 헤더를 제거했습니다 (User-Agent 제외 - 403 Forbidden 오류를 방지하는 데 필요함). 그리고 csv 파일이 아닌 HTML 페이지 코드를 계속받습니다. – user2148983