遇到了这个问题 - 不确定是否可能。
用户登录到sharepoint门户服务器。
第4点就是问题。
答案 0 :(得分:1)
如果用户凭据是当前登录的用户凭据,这将有效;在调用GetResponse()之前,在HttpWebRequest上将UseDefaultCredentials设置为True时,默认情况下会发送这些内容。
如果用户提供了默认的不同凭据,例如存储在服务器上的NTLM协商凭据和,则用户不会选择保留这些凭据(通过选择“记住我的凭据”)复选框),然后ActiveX HttpWebRequest.GetResponse()调用将抛出WebException,并显示一条消息,指示响应是401(未经授权)。 ActiveX的HttpWebRequest无法访问用于在步骤(1)中进行身份验证的缓存凭据(如果它们未持久保存到凭证管理器)。如果这些凭据 持久保存到Credential Manager,则只要其请求中的目标与请求中使用的目标相同,ActiveX Web客户端就会知道使用缓存的凭据在步骤(1);如果两个请求上使用的主机名相同,则会出现这种情况。
最后,如果您在ActiveX控件中没有凭据,则可以使用.NET Framework CredUIPromptForCredentials和CredUIPromptForWindowsCredentials函数来提示它们。有关这些功能的信息,以及有关从托管代码中正确包装和使用它们的更多信息,请参阅MSDN上Application Password Security中的Peer Channel Team Blog。使用CredUIPromptForWindowsCredentials,然后调用CredWrite,您可以在ActiveX中实现具有IE使用外观的无缝密码提示。
答案 1 :(得分:0)
这取决于所使用的身份验证机制 - 如果用户使用NTLM(Windows集成)登录页面,则WebClient无法重用凭据。如果它是基于kerberos的,你有更好的机会。