在我的asp.net應用程序我有一個運行了大量的參數(請在參數列表中的所有選項)我收到以下異常被拋出SSRS異常由於對象的當前狀態,操作無效。和AspNetSessionExpiredException
Operation is not valid due to the current state of the object.
報告時連接到SSRS端點reportview
我看過很多博客以及在這裏發佈的帖子,這些帖子引用MS應用的安全補丁作爲貢獻原因,從而將收集的項目數量限制爲1000.
我也看到了建議在位於的wcf託管服務的web.config文件中添加appSettings標記10並添加以下條目
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="20000" />
</appSettings>
我試過這個建議沒有運氣。運行sql2008r2的服務器沒有提到任何一個安全更新,並將appSettings值添加到web.config(配置ssrs管理站點或端點)對異常沒有任何影響。如果我有更多的20K物品,我甚至會增加價值(100000)。
我的第二個想法是,在wsHttp請求上的數據包大小可能會很大,我也需要增加。
更新 經過挖掘更多我發現我在正確的軌道上。以上是部分解決方案,根據MS條目KB2661403 MaxCollectionKey只是條目的一部分。第二部分是參數的系列化第二項需要被添加到appSettings部分
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
當我開始思考這個我也是在這個需要輸入不正確。它不需要在SSRS端點web.config上輸入,而是在託管報告查看器控件的站點上輸入。將這兩個條目添加到web.config導致對象成功傳遞。現在,SSRS系統正在返回一個ASP.NETSessionTimeOut異常,所以我需要嘗試延長此超時以查看是否可以在大型查詢中獲取數據。
有沒有人有任何建議或建議?
-Cheers
我認爲你應該退後一步並重新設計這個報告,因此它不需要傳遞太多的參數值,並且在超時期限內運行。這兩個問題通常是相關的 - 發送數千個參數值會創建一個困難的查詢計劃。 – 2013-03-13 00:38:51
@MikeHoney是的,我同意,但產品管理部門已經認爲,否則不管我的建議(笑) – rlcrews 2013-03-13 04:25:28
得到愛經理告訴IT如何做他們的工作。讓你想知道爲什麼他們聘請專家時,他們不會聽他們。祝你好運! – ShellNinja 2013-11-29 18:19:17