gpt4 book ai didi

c# - DefaultCredentials 在哪里拉出 "UserName"作为 web 请求的用户名?

转载 作者:行者123 更新时间:2023-11-30 12:09:57 28 4
gpt4 key购买 nike

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

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

这在我的开发伙伴的机器上以及我们的大多数客户都运行良好。但是一些客户端遇到 401:System.Net.WebException:请求失败,HTTP 状态为 401:未经授权,来自 SoapHttpClient 系统。有趣的是,我可以在我的机器上重现这个问题。使用 Fiddler 查看流量,NTLM 身份验证开始,然后“UserName”(字面意思!)作为用户名而不是我的真实用户名发送。显然那是失败的。

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

最佳答案

这可能是存储凭据的问题。通过在命令行运行 control keymgr.dll 查看您存储了哪些凭据。看这个article .

关于c# - DefaultCredentials 在哪里拉出 "UserName"作为 web 请求的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com