有一個WinForms
桌面應用程序,它試圖連接到SSRS
服務。報表服務器被配置爲接受Active Directory憑證登錄以及用於報告目的的特定用戶的憑證。在下面的代碼部分,我們使用WinForms
ReportViewer
:DefaultCredentials在哪裏將「UserName」作爲Web請求的用戶名?
reportViewer.ServerReport.ReportServerUrl = new Uri(_dboardServices.ReportingServicesUrl);
reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = CredentialCache.DefaultCredentials;
這工作我的同事開發的機器上很好,而且我們的大多數客戶。但有些客戶端遇到來自SoapHttpClient系統的401:System.Net.WebException: The request failed with HTTP status 401: Unauthorized
。有趣的是,我可以在我的機器上重現此問題。通過Fiddler
來查看流量,開始NTLM
身份驗證,然後將「用戶名」(字面上!)作爲用戶名而不是我的真實用戶名發送。顯然這失敗了。
如果我使用正確的用戶名,密碼和域名(reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new NetworkCredential(goodUserName, goodPassword, domain);
)構建證書,我的請求會成功。就好像我導航到SSRS
asmx
鏈接並鍵入我的憑證。但CredentialCache.DefaultCredentials
(它應該默認爲我的AD憑據)從某處拉出這個「用戶名」。系統從哪裏獲得?到目前爲止,我沒有運氣搜索過我們的源代碼和網頁。
@ P.Brian.Mackey在此期間,我發現了它,你是對的。請寫一個答案,我會標記它。 –
當然可以。完成 –