用windows集成验证需要在IIS中将相应目录的访问改为禁用匿名访问,否则.net程序会以aspnet用户作为匿名用户来访问相应资源,取不到值的.
在IIS中改一下应该就行了.

解决方案 »

  1.   

    liubr
    这个改了,原来就禁止了匿名访问。这个结果又没有其他原因。
      

  2.   

    我就是这么做的,IIS中禁止匿名访问,global.asax中:
        Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
            '取登录用户
            Dim logonUser As String = User.Identity.Name
            Dim usrLen As Int16 = Len(logonUser)
            Dim usrInstr = InStr(logonUser, "\")
            '取得不含域名的用户名
           logonUser = Mid(logonUser, usrInstr + 1, usrLen - usrInstr)
            Session("logonUser")=logonUser
        End Sub
    就可取得登录用户,你的是其他什么原因就不知道了.
      

  3.   

    估计在global.cs中没有 OnAuthenticate //我记不清了
    中加验证给单个用户的身分赋值,当然就是空的了.具体的我不太记得了
      

  4.   

    例如forms验证
    //   身分OK之后
     System.Web.Security.FormsAuthenticate.RedirectFromPage("用户名",false) //不设置取不到值,当然windows验证有其它的方法
      

  5.   

    现在的情况是,我前些日子编的这段程序,运行看不到结果,但是昨天忽然发现在调试的时候,用户名字在Label上显示出来了,而如果我直接从浏览器调我的程序,却不能发现Label上有用户名,这说明通过浏览器的话,读不出用户名,为什么是现在这个样子?大家还有什么建议吗?