string domainAndName = HttpContext.Current.User.Identity.Name;//得到当前浏览网页的用户名(windows登录名一般网络上验证登录的话就像: google/ss,这里google是域,ss是自己的用户名)
string[] infoes = domainAndName.Split(new char[1] { '//' }, StringSplitOptions.RemoveEmptyEntries);//这里将用户名和域分离开了
string strDomain = infoes[0].ToLower() ;
string username = infoes[1];
这个前提是以windows集成登录为前提。不能是匿名登录。
还有几种方法:
string domain = Environment.GetEnvironmentVariable("USERDOMAIN");这样也是可行的。但是这个只是在本机环境下,也就是不能是网页运行这段代码。必须是一个应用程序。
System.Security.Principal.WindowsIdentity.GetCurrent().name;这个用于得到机器的用户名和域。但是对于网站来说一样行不通。
这是因为一般我们运行程序是以登录用户的用户名启动。而网站的运行是System用户。所以使用以上两个在网站发布的时候只能得到ASP.net这个域,因为IIS是以System运行的。但是在.net调试的时候,.net2005启动是另一套debug的网站发布机制,并且是以当前登录的用户身份运行的。 所以这使得在调试时正确的网站,但是发布后去错误了。但是如果使用的.net2003这又另当别论。