在我的 asp.net 应用程序中,当运行具有大量参数的报告时,我有一个连接到 ssrs 端点的报告视图(在参数列表中选择所有选项)我收到以下异常被抛出
Operation is not valid due to the current state of the object.
我在这里看到了许多博客以及帖子,其中引用了 MS 应用的安全补丁作为造成此问题的原因,这将您可以在集合中拥有的项目数量限制为 1000。
我还看到了在 web.config 文件中为位于的 wcf 托管服务添加 appSettings 标记C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer
并添加以下条目的建议
<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 异常,因此我需要尝试延长此超时时间以查看是否可以在大型查询中取回数据。
有没有人有任何建议或建议?
-干杯