我已经尝试过来自 stackoverflow 的链接
我有一个 silverlight 客户端和 wcf 服务。该应用程序具有3种身份验证模式
- 活动目录
- Windows 直通
- 专有的-显然我对这个没有问题。(我真的不知道活动目录和窗口传递之间有什么区别。我只是对两者使用相同的代码,除了窗口传递我得到当前用户和 AD 应用程序提示输入用户名密码)
.
private string GetCurrentUser()
{
try
{
string result = WindowsIdentity.GetCurrent().Name;
WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
result = wp.Identity.Name;
if (result.Contains(@"\"))
{
int position = result.LastIndexOf(@"\") + 1;
result = result.Substring(position);
}
return result;
}
catch (Exception ex)
{
return "";
}
}
WindowsIdentity 和 WindowsPrincipal 都返回“DefaultAppPool”或当前线程运行的任何 AppPool。甚至 Environment.UserName 返回相同。
当我打开<identity impersonate ="true"/>
web.config 时,silverlight 客户端无法连接到 wcf。它收到“未找到”错误。所以,我需要保持<identity impersonate ="false"/>
我只需要当前登录的用户,我不知道这有这么难。