Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...
??? 在Sharepoint學(xué)習(xí)筆記---如何在Sharepoint2010網(wǎng)站中整合Crystal Report水晶報表(顯示數(shù)據(jù)一)中,解釋了如何把Crystal Report整合到Sharepoint2010并把報表數(shù)據(jù)顯示出來,但這樣并不完整,因為我們在開發(fā)時是以系統(tǒng)帳戶進行開發(fā)和部署的,而當部署后,就會出現(xiàn)因為訪問權(quán)限問題造成的報錯。在我的開發(fā)中遇到一個問題表現(xiàn)為(當以普通用戶帳號登錄時):
??? 1、如果報表沒有涉及傳遞任何參數(shù):則報表能正常顯示出來。
??? 2、如果報表涉及到傳參:則會出現(xiàn) "Fail to render the page"錯誤。
????????????? ?
??? 由此推斷,錯誤是發(fā)生在報表參數(shù)的傳遞過程中的。
??? 首先想到的解決辦法是采用身份模擬(Impersonation)或通過SPSecurity.RunWithElevatedPrivileges來提高操作權(quán)限級別的方式來解決訪問權(quán)限問題。但兩者都失敗了。分析原因是Crstalreportviewer在進行參數(shù)操作時仍然是通過的上下文用戶權(quán)限進行操作,所以我們的身份模擬或RunWithElevatedPrivileges方式并沒有作用到Crstalreportviewer這一過程。所以只有另想方法,問題就歸結(jié)到"到底是什么資源拒絕了普通帳戶的訪問"。
?? 使用Fiddler和Httpwatcher進行跟蹤和測試都沒把問題解決掉,最后使用了Process Monitor,對比系統(tǒng)帳戶和普通帳戶的訪問差異,結(jié)果發(fā)現(xiàn)蛛絲馬跡
?????
于是修改Windows目錄AppData(C:\Windows\ServiceProfiles\NetworkService\AppData)的權(quán)限,增加Everyone的讀寫(read,write)權(quán)限。問題終于得以解決。這說明Crstalreportviewer在獲取參數(shù)后,要通過w3wp進程在C:\Windows\ServiceProfiles\NetworkService下創(chuàng)建臨時文件,而2008下默認配置下網(wǎng)絡(luò)普通用戶對此目錄沒有權(quán)限,于是拋出上述錯誤。
當然,如果在報表中嵌入了圖片,則需要修改存放圖片的臨時文件的文件夾的權(quán)限。我所作的修改是設(shè)置everone權(quán)限給
"C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\cr_tmp_image___sd1-sp1dev_2010 "從而使嵌入的logo圖片顯示出來。
希望此文對大家有所啟發(fā)。
?
相關(guān)鏈接: Sharepoint學(xué)習(xí)筆記---如何在Sharepoint2010網(wǎng)站中整合Crystal Report水晶報表(顯示數(shù)據(jù) 一)相關(guān)鏈接: Sharepoint學(xué)習(xí)筆記---如何在Sharepoint2010網(wǎng)站中整合Crystal Report水晶報表(顯示圖片)
相關(guān)鏈接: Sharepoint學(xué)習(xí)筆記---如何在Sharepoint2010網(wǎng)站中整合Crystal Report水晶報表(報表登錄處理)
轉(zhuǎn)載于:https://www.cnblogs.com/wsdj-ITtech/archive/2011/07/15/2107170.html
總結(jié)
以上是生活随笔為你收集整理的Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 401 Palindrome
- 下一篇: POJ1269 Intersecting