Я использую HttpWebRequest для программного экспорта отчета SSRS 2008 в формате PDF. Моя проблема, однако, в том, что мой NetworkCredentials не работает. При попытке доступа к SSRS я получаю ошибку Unauthorized (401).Получение ошибки «Неавторизованный (401)» в HttpWebRequest для SSRS 2008
Я знаю, что предоставленные NetworkCredentials являются правильными. Если я вхожу в наш веб-сервис SSRS вручную, это точные учетные данные, которые я использую. Кроме того, это работает нормально локально, просто не на нашем сервере.
Отчет запускается на нашем веб-сайте asp.net 4.0. Когда пользователь нажимает на кнопку «Создать отчет», то выполняется следующий код (ошибка происходит на моей 2-ой линии, на WebRequest.Create), чтобы попытаться связаться с моим SSRS 2008:
string sTargetURL = "MY_REPORT_SERVER?/REPORT_NAME&rs:format=pdf&rs:command=render&rc:parameters=Collapsed";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sTargetURL);
req.PreAuthenticate = true;
req.Credentials = new NetworkCredential("Username", "Password", "Domain");
HttpWebResponse HttpWResp = (HttpWebResponse)req.GetResponse();
Stream fStream = HttpWResp.GetResponseStream();
byte[] fileBytes = ReadFully(fStream);
HttpWResp.Close();
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/pdf";
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=\"" + reportName + ".pdf"\"");
System.Web.HttpContext.Current.Response.BinaryWrite(fileBytes);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();