2013-03-04 41 views
1

我使用HttpWebRequest的以编程方式导出PDF格式的SSRS 2008年的报告。然而,我的问题是,我的NetworkCredentials似乎没有工作。尝试访问SSRS时收到未经授权(401)错误。接受“未经授权(401)”错误的HttpWebRequest至2008年SSRS

我知道我提供的NetworkCredentials是正确的。如果我手动登录我们的SSRS Web服务,这些是我使用的确切凭据。此外,这工作正常,只是没有在我们的服务器上。

该报告是对我们的asp.net 4.0网站上运行。当用户点击“生成报告”按钮,下面的代码被执行(在我的二号线出现错误,上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(); 

回答

0

的应用程序之外,您是否能够在本地和报告管理器/服务器中运行报告?如果是这样,报告使用哪种类型的数据源?这可能是因为数据源不接受来自Report Server的双重跳转凭据。您可能需要创建一个具有必要读取权限的域帐户,并在报告服务器上配置数据源以模拟这些凭据。

相关问题