C# ASP.NET获取用户名

6
“你是否有.NET编程经验?是的?很好,这里有一个巨大的破碎程序,请修复它。” 这就是我所处的情况,如果这是一个简单的问题,那么抱歉。
我正在处理的程序从Web服务器获取文件。预期用户已经登录到Web服务器。我需要获取当前已登录到服务器的人员的用户名(或只需确保已有人登录到服务器)。
我尝试了以下方法,但返回一个空字符串。
user = HttpContext.Current.User.Identity.Name;

3
你是否在IIS中为Web应用启用了Windows身份验证? - Davide Piras
Environment.UserName 返回什么? - Chris Gessler
3个回答

7
请确保在Web.Config文件中设置了Windows身份验证。在访问用户名之前,请检查以下内容:
HttpContext.Current.User.Identity.IsAuthenticated

请将Web.Config配置如下所示:

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

认证目前设置为表单。将其更改为Windows是否存在很大的危险?<authentication mode="Forms"> <forms loginUrl="~/Account/Login.aspx" timeout="2880"/> </authentication> - babno
1
+1,但您不需要更改为Windows。保持认证模式与网站设计的一致。(如果已登录,则用户名也将填充任何其他身份验证模式) - Adriano Repetti
1
是的。保持设计不变。并尝试使用以下链接理解FormsAuthentication https://dev59.com/tmoy5IYBdhLWcg3wCpvQ - Rajesh Subramanian

1

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

我不建议您在没有对应用程序有所了解的情况下更改 web.config 文件中的任何内容。


0

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

有关更多信息,请查看 MSDN 文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接