我正在使用 HttpWebRequest 以编程方式以 PDF 格式导出 SSRS 2008 报告。然而,我的问题是我的 NetworkCredentials 似乎没有工作。我在尝试访问 SSRS 时收到未经授权的 (401) 错误。
我知道我提供的 NetworkCredentials 是正确的。如果我手动登录到我们的 SSRS Web 服务,这些就是我使用的确切凭据。此外,这在本地运行良好,只是在我们的服务器上不行。
该报告在我们的 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();