Vb.net 使用WebClient从SSRS报告下载CSV文件

Vb.net 使用WebClient从SSRS报告下载CSV文件,vb.net,csv,reporting-services,webclient,downloadfile,Vb.net,Csv,Reporting Services,Webclient,Downloadfile,我正在尝试使用以下代码从SSRS报告下载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" Usin

我正在尝试使用以下代码从SSRS报告下载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
常量URI为字符串=”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”
使用myWebClient作为WebClient=newWebClient()
使用myWebClient
.Headers.Add(“Accept”,“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”)
.Headers.Add(“接受编码”、“gzip、deflate、sdch、br”)
.Headers.Add(“接受语言”,“en-US,en;q=0.8”)
.Headers.Add(“内容处置”、“附件;文件名=%22%5FFile.csv%22”)
.Headers.Add(“内容编码”、“gzip”)
.Headers.Add(“内容类型”、“文本/csv”)
.Headers.Add(“更改”、“接受编码”)
.Headers.Add(“用户代理”、“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/52.0.2743.116 Safari/537.36”)
.Headers.Add(“升级不安全请求”,“1”)
.Headers.Add(“Referer”,URI)
.Headers.Add(“缓存控制”、“专用”)
.Credentials=新网络凭据(“,”)
.DownloadFile(URI,目标)
以
终端使用

问题是下载的文件不是csv文件。当我在任何文本编辑器中打开它时,我看到的都是“垃圾”字符,看起来像是在进行某种编码。如果我注释掉“Accept Encoding”标题并重新运行代码,我会得到生成的HTML页面的代码,而不是我需要的csv文件。有人知道如何正确下载文件吗?顺便说一句,我不确定我添加的所有标题都是必要的

您需要从以下内容更改URI常量:

常量URI为字符串=”https://blah.blah.com/blah/_layouts/15/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/blah/Production%20Reports/The_File.rdl&rs:format=csv“

为此:

常量URI为字符串=”https://blah.blah.com/blah/_layouts/15/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/blah/Production%20Reports/The_File.rdl&rs:format=csv&rs:Command=Render“


您缺少Uri的
Command=Render
部分。

我添加了Command=Render部分,但仍然得到HTML页面响应,而不是csv文件。您是否在没有添加所有附加标题的情况下尝试了此操作?因为,我每个月都会运行类似的程序,我不需要添加所有这些来让它正常工作。我删除了我添加的所有标题(除了User Agent,这是避免出现403禁止错误所必需的),并且我仍然会得到HTML页面代码,而不是csv文件。WebDownload是否在.NET Framework的其他版本中?我使用的是4.5,无法识别“WebDownload”。