C# 如何让用户域创建principalcontext asp.net

C# 如何让用户域创建principalcontext asp.net,c#,dns,principalcontext,C#,Dns,Principalcontext,使用.NET4.0 创建PrincipalContext的代码行是: PrincipalContext context = new PrincipalContext(ContextType.Domain, "domain"); 不久前,我看到了一个代码片段,其中您不必指定域名,而是使用系统或httpcontext变量来传递域名。它有点像user.logondomain,但我再也找不到了。它没有将域从user.identity.name中剥离 这是在ASP.NET web应用程序中使用windo

使用.NET4.0 创建PrincipalContext的代码行是:

PrincipalContext context = new PrincipalContext(ContextType.Domain, "domain");
不久前,我看到了一个代码片段,其中您不必指定域名,而是使用系统或httpcontext变量来传递域名。它有点像user.logondomain,但我再也找不到了。它没有将域从user.identity.name中剥离

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

这应该可以:

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

如果您指的是,这肯定不是您所需要的,因为它将返回执行代码的帐户的域,这不是ASP.NET的场景。

否。我知道那种方法。我要找的是一些已经存在的变量,这正是我要找的。它在我的dev框中返回正确的名称,但我猜这是因为它是dev?VS2010 web应用使用IIS Express运行windows身份验证?它返回您的域名,因为您是执行代码的人。如果应用程序将在生产环境中运行,它将显示执行代码的帐户的域,而不是发出当前请求的用户的域。