为什么System.Web.HttpContext.Current.User.Identity.Name返回一个空字符串?

时间:2013-05-23 07:24:47

标签: c# asp.net

我有以下代码来验证用户是否有权访问该应用程序。问题是System.Web.HttpContext.Current.User.Identity.Name返回空。我检查了。可能是什么问题呢?我的其他应用程序使用相同的代码片段,它在那里工作。为什么会这样?

string username = System.Web.HttpContext.Current.User.Identity.Name;
string str = "SELECT LASTNAME +', '+ FIRSTNAME AS NAME, USER_NAME, DEPARTMENT FROM DBNAME.DBO.TABLENAME WHERE USER_NAME = '" + username + "' ";
SqlCommand cmd = new SqlCommand(str, conn);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (rdr.HasRows == false)
{

        Server.Transfer("unauthorized.htm");
}
else
{
    while (rdr.Read())
    {
        name = rdr["NAME"].ToString();
        username = rdr["USER_NAME"].ToString();
        dept = rdr["DEPARTMENT"].ToString();
    }
}

2 个答案:

答案 0 :(得分:5)

看起来你有一个匿名用户。如果您不想允许匿名用户,请将以下内容添加到web.config:

<system.web>
  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

答案 1 :(得分:0)

如果您在IIS Express中使用Windows身份验证,请确保您拥有C:\ Users \ [用户名] \ Documents \ IISExpress \ config \ applicationhost.config。

检查相关问题:IIS Express gives Access Denied error when debugging ASP.NET MVC