SSRS报告查看器 - 在NLB(SQL Server)上找不到或找不到ASP.Net会话

时间:2017-10-19 11:40:47

标签: reporting-services ssrs-2008 reportviewer nlb sql-session-state

您好,

我在NLB production environment上遇到了一个问题,即配置了两个应用服务器。两者都有一个ReportViewer虚拟目录,使用SSRS reports页面在iframe中呈现.aspx

在“ASP.NET会话已过期或无法找到”错误后,我使用自定义数据库更改了sessionState mode=SQLServer,但仍然存在错误。我也可以在DB表中看到会话条目。

还有什么可以遗漏?

- 我已经读过某个地方,域名中有_ (underscore)会导致这种情况。我检查过网址,querystring参数中有下划线,但域名本身没有下划线,查询字符串由ReporViewer ScriptResource.axd本身自动生成。

- KeepSessionAlive也是如此& AsyncRendering也是如此,在两个州检查了这些,问题没有得到解决。

- cookieless设为“false”

-ReportViewer版本如下:

<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=xx" />
<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=xx" />

任何帮助指出我正确方向的人都将不胜感激。 谢谢:)

1 个答案:

答案 0 :(得分:1)

使用SSRS在NLB场景中需要考虑的主要问题是ViewState。如果用户正在访问负载平衡URL,则其流量可以转到负载平衡器池中的任何SSRS服务器。您需要在所有SSRS服务器上设置相同的机器密钥,以允许任何服务器接收其会话。

我在下面的SQLShack帖子中写了所有必需的步骤。只要SSRS设置为这样,前端就不会知道/关心你正在给它一个(负载平衡的)URL。希望有所帮助!

https://www.sqlshack.com/scaling-out-reporting-services-changes-in-sql-server-2016/