这是一个艰难的过程,而且关于我遇到的问题的信息并不多。有几件事不对劲。
问题 #1:报告经理给了我这个错误:
StringStartsWith can't accept null parameters
解决方案 #1:在 SSRS 中实现自定义或表单身份验证时需要该<loginUrl>
标记。
我必须修改 RSReportServer.Config 文件以将我的登录页面添加到<loginUrl>
标签中。一旦我添加了这个并实现了登录页面(请参阅示例中的 UILogin.aspx),我不再收到 StringStartsWith 错误。
文件位置:*C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\RSReportServer.Config*
<UI>
<ReportServerUrl></ReportServerUrl>
<PageCountMode>Estimate</PageCountMode>
<CustomAuthenticationUI>
<loginUrl>[YourUrl]</loginUrl>
<UseSSL>False</UseSSL>
<PassThroughCookies>
<PassThroughCookie>[YourSSOCookieName]</PassThroughCookie>
</PassThroughCookies>
</CustomAuthenticationUI>
</UI>
问题 2:报告管理器和我的登录页面无休止地相互重定向。
这个问题是因为另外两个问题。
解决方案 #2A: SSRS 报告管理器需要知道 cookie 的名称以用于其授权票证。
首先,我必须修改报表服务器的 Web.Config 并告诉它用于授权票证的 cookie 的名称。我sqlAuthCookie
在下面的例子中使用过。
文件位置:*C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\Web.Config*
改变:
<authentication mode="Forms">
<forms loginUrl="[YourUrl]" name="sqlAuthCookie" requireSSL="false" />
</authentication>
解决方案 #2B: SQL Server 2008 R2 有一个错误 - 服务补丁 2 修复了它。
由于 SQL Server 2008 R2 在处理 cookie 的方式中引入了一个错误,我仍然收到了无休止的重定向。简而言之,来自 Report Manager 的响应会告诉您的应用程序响应标头中的 SSRS 身份验证 cookie 的名称:
string cookieName = response.Headers["RSAuthenticationHeader"]
当我在这里设置断点时,我注意到 cookie 名称实际上是这样的:
sqlAuthCookie,sqlAuthCookie
我做了一些搜索,发现了这个问题:SQL Server 2008 R2 (November CTP)。表单身份验证在 SSRS 中不起作用
下载并安装SQL Server 2008 R2 SP2为我解决了这个问题,现在我的解决方案有效!
注意:您可以只安装它而不是 SP:SQL Server 2008 R2 的累积更新包 5