首页 > 解决方案 > 如何在我的控制器文件中的 dot net 中获取用户名?

问题描述

我正在开发一个 ASP.NET Core 5.0 MVC 应用程序。它使用 Windows 身份验证。我仍然只从 Visual Studio 运行它。

我可以在*.cshtml文件中使用@Environment.UserName. 我怎样才能UserName在我的控制器 ->*.cs文件中得到相同的结果?

我收到一个错误

类型名称“用户名”在类型环境中不存在

标签: c#visual-studioasp.net-core-mvcasp.net-core-5.0

解决方案


我创建了两个带有 Windows 身份验证的示例项目(.net 3.1 和 .net 5.0)。我使用下面的代码,我可以得到用户名。

而我的控制器只使用默认的 HomeController。

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using WebApplication2.Models;

namespace WebApplication2.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
        public string GetUserName()
        {
            return Environment.UserName;
        }
        public string GetName()
        {
            // It also works for me
            //return User.Identity.Name;
            return HttpContext.User.Identity.Name;
        }
}

在此处输入图像描述

在此处输入图像描述


推荐阅读