尝试使用System.Net.WebClient

时间:2018-10-30 17:20:02

标签: asp.net vb.net reporting-services ssrs-2008-r2 ssrs-2016

我要使用以下代码将SSRS报告以PDF格式下载到文件夹中

Protected Sub BtnPDF_Click(sender As Object, e As EventArgs)
    Try
        Dim client As New WebClient()
        client.Headers.Add("user-agent", "Document download")
        client.UseDefaultCredentials = True
        'client.DownloadFile("http://server-name1/ReportServer_REPORTSDB/Pages/ReportViewer.aspx?%2fReport_Folder%2fReportName&rs:Command=Render&ID=12421&DTE=0&rs:Format=PDF", "\\server-name1\SharedFolder\Test2.pdf")
        'client.DownloadFile("http://server-name2/ReportServer_REPORTSDB/Pages/ReportViewer.aspx?%2fReport_Folder%2fReportName&rs:Command=Render&ID=12421&DTE=0&rs:Format=PDF", "\\server-name1\SharedFolder\Test2.pdf")
        'client.DownloadFile("http://server-name2/NormalWebsite/Documents/UserGuide.pdf", "\\server-name1\SharedFolder\Test2.pdf")
    Catch ex As Exception
        txtComments.Text = ex.Message
    End Try
End Sub

请注意已注释掉的行:在Visual Studio中运行代码并取消注释这三行中的任何一行时,代码将按预期工作,将PDF文件下载到该位置。

发布到IIS时,只有最后一行(仅指向本地站点的PDF文件)会将文件下载到该位置。如果我仅取消前两行之一的注释,则代码将落入catch块并在注释文本框中显示403错误

我想这是某种SSRS问题,因为这仅发生在SSRS URL上,但我不知道出了什么问题?

NB

http://server-name1/ReportServer_REPORTSDB是SSRS 2016服务器

http://server-name2/ReportServer_REPORTSDB是SSRS 2008R2服务器

这不是我的代码,但是文档建议该行

client.Headers.Add("user-agent", "Document download")

是为了防止500错误

0 个答案:

没有答案