【问题标题】:c# asp.net getting usernamec# asp.net 获取用户名
【发布时间】:2012-07-03 19:36:02
【问题描述】:

“你做过任何 .net 编程吗?是的?很好,这是一个严重损坏的程序,修复它”。这就是我所处的情况,如果这是一个简单的问题,请见谅。

我正在处理的程序从网络服务器中提取文件。预计用户已经登录到 Web 服务器。我需要提取当前登录到服务器的用户的用户名(或者只是确保确实有人登录到服务器)。

我尝试了以下方法,它返回一个空字符串。

user = HttpContext.Current.User.Identity.Name;

【问题讨论】:

  • 您是否在 IIS 中为 Web 应用程序启用了 Windows 身份验证?
  • Environment.UserName 返回什么?

标签: c# asp.net


【解决方案1】:

请确保您在 Web.Config 文件中设置 Windows 身份验证。在访问用户名之前还要检查以下内容,

HttpContext.Current.User.Identity.IsAuthenticated

如下设置Web.Config,

<authentication mode="Windows"></authentication>

【讨论】:

  • 身份验证当前设置为表单。把它改成windows有很大的危险吗?
  • +1 但您不需要更改为 Windows。将身份验证模式保持为站点的设计目的。 (如果登录,用户名也将填充任何其他身份验证模式)
  • 是的。保持设计原样。并尝试使用以下链接了解表单身份验证stackoverflow.com/questions/8810496/…
【解决方案2】:

首先检查 Web.config 文件中的&lt;authentication&gt; 标记。 如果您没有找到它,那么您的应用程序可能没有使用任何标准的身份验证机制。如果是这种情况,请查看login.aspx 或任何进行身份验证的代码。在那里您将获得登录的用户数据。

我不建议您更改 web.config 文件中的任何内容,除非您对应用程序中发生的事情有一定的把握。

【讨论】:

    【解决方案3】:

    User 对象的属性通常由应用程序的身份验证方案(窗体、Windows 或自定义)填充,因此在开始访问 User 之前,您需要确保其中一个已到位。

    如需了解更多信息,请查看docs at MSDN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      相关资源
      最近更新 更多