我在本地主機上設置了SSRS,並使用BIDS爲它們創建了幾個報告。他們從部署SSRS的同一個SQL Server訪問數據,當我預覽它們時,它們運行良好。然後,我將它們部署到我的本地主機SSRS,並通過ReportManager Web界面訪問它們,它們再次運行得很好。最後,我將它們部署到我的託管服務提供商的SSRS。同樣的交易;良好的數據連接性,在ReportManager中看起來很棒。在ASP.Net中使用SSRS ReportViewer
第一次通過任一系統上的ReportManager訪問它們時,它需要我的用戶名和密碼,這在我的筆記本電腦上只是我的帳戶登錄名和密碼。對於我的託管服務提供商,這是我的帳號登錄。
我的問題是當我嘗試使用ASP.Net中的ReportViewer控件顯示報表時。很多時候,當它嘗試渲染時,我會得到一個「錯誤登錄」或「401:未經授權」而不是我的報告。經過大量的閱讀和思考之後,我認爲問題在於我不需要登錄SQL Server,而是登錄我的報告所在的網站(網絡服務?)。現在,如果我根本沒有提供任何證書,我可以在ReportViewer中獲取本地報告(通常)。但是,當我將報告部署到遠程服務器時,這不再起作用。
經過一番研究,我創建了一個實現IReportServerCredentials的類,並嘗試使用它來傳入用戶名和密碼,但這似乎不起作用。這些證書是否應該用於數據源或Web服務,這讓我感到困惑。
如果有人可以告訴我如何讓ReportViewer登錄到SSRS Web服務,我非常感謝。
事實上,當我部署到另一個臨時位置時,我收到了一個錯誤,表示我使用的NT帳戶沒有執行該操作的權限。瞭解模擬和我的應用程序運行的帳戶是我需要關注的更多內容。在今天的最後,我能夠通過添加「瀏覽器」的「BUILTIN \ Users」角色來運行這個東西。它有效,但我並不瘋狂,因爲我認爲它基本上意味着報告現在不會被鎖定。我將繼續追求我在這裏得到的答案。 – 2010-01-15 04:56:31
最後,我最終通過檢查我更仔細地構建的憑證類,並將其與我知道工作的示例代碼進行比較,從而發現了它。事實證明,我從我的GetFormsCredentials()方法返回「True」。因爲我從來沒有打算使用表單身份驗證,所以我應該返回「False」。「所有」out「param對該方法都設置爲NULL,因此認證從未正確完成,並且我沒有意識到它。 – 2010-01-18 01:21:52
太棒了。當我們嘗試將SSRS與我們的集成時遇到了相同的問題最終我們能夠獲得正確的權限,但這很痛苦。 – jvilalta 2010-01-18 01:50:21