2016-10-31 3 views
0

ВопросСкачать SSRS отчет и сохранить в определенном месте (C#) (Несанкционированное)

Я пытаюсь загрузить отчет SSRS через его URL в буфер данных (массива байтов), так что поэтому я могу затем сохранить это в определенной папке с именем по моему выбору. Я открыт для предложений о различных способах выполнения этого, если это необходимо.

Этот вопрос

Однако я не буду постоянно получаю ошибку ниже (401) Несанкционированное, независимо от того, какие учетные данные я ввожу:

An exception of type 'System.Net.WebException' occurred in System.dll but was not handled in user code

Additional information: The remote server returned an error: (401) Unauthorized.

Я использую этот код (C#):

WebClient myWebClient = new WebClient(); 
NetworkCredential netCredential = new NetworkCredential("username", "password"); 
myWebClient.Credentials = netCredential; 

var theURL = "http://ReportServer/ReportServer_MYSERVER/Pages/ReportViewer.aspx?%2fPurchaseOrder&rs:Command=Render&OrderID=100&rs:ClearSession=true&rs:Format=PDF" 

byte[] myDataBuffer = myWebClient.DownloadData(theURL); 

пример URL (этот файл отлично загружается, если я просто копирую приведенный ниже URL-адрес в мой браузер, никаких проблем с доступом вообще): http://ReportServer/ReportServer_MYSERVER/Pages/ReportViewer.aspx?%2fPurchaseOrder&rs:Command=Render&OrderID=100&rs:ClearSession=true&rs:Format=PDF

Моя машина находится на домене, и я пробовал эти учетные данные вместе с доменом, а также с учетной записью SA базы данных, но оба доставляют такой же выпуск.

Я знаю, что этот код работает при загрузке файла PDF, как я жестко случайный URL из интернета и это работало, например: «http://www.axmag.com/download/pdfurl-guide.pdf»

Thankyou все для помощи в этом вопросе, им в надежде что это возможно, так как это было бы очень удобное дополнение к моему заявлению

ответ

1

оказывается, что это было так просто, как это для моего сценария (используя по умолчанию учетных данных):

var theURL = "http://ReportServer/ReportServer_MYSERVER/Pages/ReportViewer.aspx?%2fPurchaseOrder&rs:Command=Render&OrderID=100&rs:ClearSession=true&rs:Format=PDF"; 

WebClient Client = new WebClient(); 
Client.UseDefaultCredentials = true; 

byte[] myDataBuffer = Client.DownloadData(theURL); 

этот код выше позволяет любому SSRS сообщить в b e загружается как массив байтов. Это то значит, что он может быть сохранен в указанном месте, с именем по вашему выбору:

var filename = "Test.PDF"; 
var fileStructureLocal = "C:\\Test"; 
var fileStructureNetwork = "\\\\NetworkDrive\TestFolder"; 

var fileLocation = fileStructureNetwork + "\\" + filename; 

if (System.IO.File.Exists(url) == true) 
     { 
      //DO NOTHING 
     } 
else 
     { 
      System.IO.File.WriteAllBytes(url, myDataBuffer); 
      //SAVE FILE HERE 
     } 

это следующий блок, как переименовать файл, и укажите местоположение. Я также добавил чек, чтобы узнать, существует ли он, если он просто ничего не делает.

Я надеюсь, что это помогает, поскольку это то, что я пытался получить в течение длительного времени!

Смежные вопросы