User.Identity.Name需要的是NT用户登陆名称,也就是在IIS安全设置中不允许匿名帐户登陆.因为你使用的是表单验证而非WINDOWS验证,所以需要使用Request.Form获取用户名,还要看你的Web.Config文件设置的验证方式

解决方案 »

  1.   

    <authentication mode="Windows" > 
        <forms name=".ASPXAUTH" loginUrl="startlogin.aspx" />
      </authentication>
    以上是我在web.config文件中的验证方式,改成windows验证还是不行.
      

  2.   

    久闻飞刀的大名:
        我在网上看了你的很多文章,希望你能够多抽一点点空出来,帮帮我们后来者.
        我在这个程序中有自己的用户,单独存放在某一个数据库中,我现在就是想实现:登陆的时候是取我本机数据库中的用户.而不是登陆nt的用户( 如果这样的话,不是只要有nt的用户都可以进行相关的操作了.)
      

  3.   

    select 数据库中的用户表不就完了
      

  4.   

    select 数据库中的用户表,只在登陆页面判断有没有此用户,密码对不对,
    在很多的页面都要取得当前的操作用户.
         从登录页面取得用户用session传递到其它的页面可是可以,不过就是太麻烦.
         我想用User.Identity.Name取用户名.
      

  5.   

    session有什么麻烦的,session["user"]=your_user你那样不觉得也很麻烦吗
      

  6.   

    跟你就明说了:要使用User.Identity.Name除了web.config中象你那样设置之外,还要给IIS设置成WINDOWS登陆,也就是去掉匿名登陆,登陆的时候第一次无论访问哪个页面都会弹出一个WINDOWS对话框要你输入密码和用户名。
    这样每个页面都可以使用User.Identity.Name了,否则你只能靠表单和session完成用户判断
      

  7.   

    如果使用windows验证,User.Identity.Name取到的就用window用户名
    如果采用Forms验证,User.Identity.Name取到的就的登录成功后你保存的用户名.请在User.Identity.Name前先执行FormsAuthentication.RedirectFromLoginPage(txtUser.Text, false);
    其中txtUser.Text就是你要保存的用户名