2013-03-04 136 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的雙重跳轉憑據。您可能需要創建一個具有必要讀取權限的域帳戶,並在報告服務器上配置數據源以模擬這些憑據。

相關問題