4

有一个WinForms桌面应用程序尝试连接到SSRS服务。报告服务器配置为接受 Active Directory 凭据登录以及特定用户的凭据以用于报告目的。在以下代码部分中,我们使用 a WinForms ReportViewer

reportViewer.ServerReport.ReportServerUrl = new Uri(_dboardServices.ReportingServicesUrl);
reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = CredentialCache.DefaultCredentials;

这在我的开发伙伴的机器上运行良好,对于我们的大多数客户来说都很好。但是有些客户端会遇到 401: System.Net.WebException: The request failed with HTTP status 401: Unauthorized,来自 SoapHttpClient 系统。有趣的是,我可以在我的机器上重现这个问题。使用 来查看流量FiddlerNTLM身份验证开始,然后“用户名”(字面意思!)作为用户名而不是我的真实用户名发送。显然那是失败的。

如果我使用正确的用户名、密码和域 ( ) 构建凭据,reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new NetworkCredential(goodUserName, goodPassword, domain);我的请求就会成功。就像我导航到SSRS asmx链接并输入我的凭据一样。但是CredentialCache.DefaultCredentials(应该默认为我的 AD 凭据)从某处提取此“用户名”。系统是从哪里得到的?到目前为止,我搜索了我们的源代码和网络,但没有运气。

4

1 回答 1

3

这可能是存储凭据的问题。control keymgr.dll通过在命令行运行查看您存储的凭据。见这篇文章

于 2013-11-01T17:04:46.057 回答