5

我在本地主機上設置了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服務,我非常感謝。

回答

4

假設您已經在查看器上設置了ProcessingMode =「Remote」attirbute,那麼您可能會遇到身份驗證問題。在遠程模式下使用報表查看器時,報表在SSRS上由帳戶ASP.Net在下運行。此帳戶必須有權訪問報告服務器和您想要運行的報告。可能發生的情況是ASP.Net運行在無權訪問SSRS的帳戶下。

如果您希望能夠設置報告查看器的憑據,請參閱this thread以獲取解決方案和示例代碼。

+0

事實上,當我部署到另一個臨時位置時,我收到了一個錯誤,表示我使用的NT帳戶沒有執行該操作的權限。瞭解模擬和我的應用程序運行的帳戶是我需要關注的更多內容。在今天的最後,我能夠通過添加「瀏覽器」的「BUILTIN \ Users」角色來運行這個東西。它有效,但我並不瘋狂,因爲我認爲它基本上意味着報告現在不會被鎖定。我將繼續追求我在這裏得到的答案。 – 2010-01-15 04:56:31

+0

最後,我最終通過檢查我更仔細地構建的憑證類,並將其與我知道工作的示例代碼進行比較,從而發現了它。事實證明,我從我的GetFormsCredentials()方法返回「True」。因爲我從來沒有打算使用表單身份驗證,所以我應該返回「False」。「所有」out「param對該方法都設置爲NULL,因此認證從未正確完成,並且我沒有意識到它。 – 2010-01-18 01:21:52

+0

太棒了。當我們嘗試將SSRS與我們的集成時遇到了相同的問題最終我們能夠獲得正確的權限,但這很痛苦。 – jvilalta 2010-01-18 01:50:21

1

遠程調試身份驗證問題總是具有挑戰性的,但您可以通過在您的AppPool上啓用模擬來解決您的問題。這樣,當用戶登錄時,IIS將能夠以用戶身份連接到SQL Server。

另一種方法可能是使用SQL身份驗證;不幸的是,細節取決於你如何把事情聯繫起來。

+0

我絕對會更喜歡使用SQL身份驗證;主要是因爲我從來沒有理解Windows身份驗證如何執行它的功能。而且,因爲在網絡應用上沒有涉及網絡登錄。我將閱讀模仿。 – 2010-01-15 05:02:12

相關問題