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

C# 为什么System.Web.HttpContext.Current.User.Identity.Name返回空字符串?,c#,asp.net,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, US

我有以下代码来验证用户是否有权访问该应用程序。问题是
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();
    }
}

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

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

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


检查相关问题:

此代码是否取自ASP.net应用程序?两个应用程序是否都管理自己的身份验证状态?是否值得向我们提供您的web.Config身份验证您使用的身份验证?形式,联邦?您需要查看您的身份验证代码,查看用户是如何填充的您可能希望查看此答案和用户其他选项这只是给我服务器错误401-未经授权:由于凭据无效,访问被拒绝。IIS是否配置为使用Windows身份验证,以及您是否在web.config中有
?是和是。这太奇怪了。我的另一个应用程序具有相同的代码。而且在那里效果很好。哦!所以我很愚蠢,我真的忘了配置IIS身份验证。我以为我已经做了,但没有。你用了什么配置?