我需要通过一个NetworkCredential
对象,其中包含当前模拟的用户从 ASP.NET 应用程序访问 Web 服务的凭据。
我的代码如下所示:
WindowsIdentity windowsIdentity = HttpContext.Current.User.Identity as WindowsIdentity;
WindowsImpersonationContext context = windowsIdentity.Impersonate();
try {
var client = GetClient();
client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
Log("WindowsIdentity = {0}", windowsIdentity.Name);
Log("DefaultNetworkCredentials = {0}", CredentialCache.DefaultNetworkCredentials.UserName);
client.DoSomething();
} finally {
context.Undo();
}
我本来就明白CredentialCache.DefaultNetworkCredentials
应提供当前模拟用户的凭据,但事实并非如此。
我收到的日志消息是
WindowsIdentity = TESTDOMAIN\TESTUSER
DefaultNetworkCredentials =
难道我做错了什么?如果是这样,如何获取当前模拟用户的 NetworkCredential 对象?
MSDN 中的一篇有点长的文章解释了在 ASP 中获取网络凭据的选项:
如何:在 ASP.NET 2.0 中使用模拟和委托
关于该主题的另一篇博客文章(尽管我没有检查该解决方案是否真正有效:
.NET (C#) 使用网络凭据模拟
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)