0

使用 .Net 4.0 创建 PrincipalContext 的代码行是:

PrincipalContext context = new PrincipalContext(ContextType.Domain, "domain");

不久前,我看到一个代码片段,您不必指定域名,而是使用系统或 httpcontext 变量来传递域名。它类似于 user.logondomain 但我再也找不到它了。它没有从 user.identity.name 中剥离域。

这是在 ASP.NET Web 应用程序中使用 Windows 身份验证。

4

1 回答 1

1

这应该有效:

string domain = "defaultDomain";
string[] splittedAuth = Request.ServerVariables["LOGON_USER"].Split('\\');
domain = (splittedAuth.Count() > 1) ? splittedAuth[0] : domain;
PrincipalContext context = new PrincipalContext(ContextType.Domain, domain);

如果您指的是Environment.UserDomainName 属性,这绝对不是您需要的,因为它将返回执行代码的帐户的域,这不是 ASP.NET 的场景。

于 2012-12-18T20:31:34.740 回答