Ошибка 403 при попытке загрузить отчет SSRS с помощью System.Net.WebClient - PullRequest
0 голосов
/ 30 октября 2018

У меня есть следующий код, который я хочу использовать для загрузки отчета 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, поскольку это происходит только с URL-адресами SSRS, но я не могу понять, в чем проблема?

NB

http://server -name1 / ReportServer_REPORTSDB является сервером SSRS 2016

http://server -name2 / ReportServer_REPORTSDB является сервером SSRS 2008R2

Это не мой код, но в документации предлагается строка

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

для предотвращения ошибки 500

...