Blazor服务器/Asp.Net核心:在IIS上发布时,Http请求不会将用户身份传递给MVC控制器

问题描述

目前,我无法在MVC控制器中获取身份信息。在本地调试blazor应用程序时没问题,但是当我在IIS上发布该应用程序时,我仅获得执行服务帐户的标识,例如“ MachineName \ ApplicationPoolIdentity”或“ MachineName \ LocalService”(取决于选择的身份)在我的MVC控制器中)。但是,在Blazor页面上,身份验证和授权似乎可以正常工作。

我在IIS站点身份验证设置中启用了“ Windows身份验证”和“匿名身份验证”。

我需要用户身份来执行我们的审计跟踪,该审计跟踪为每个粗糙操作创建了一个条目。

在MVC控制器中,我尝试使用“ this.User.Identity”或“ HttpContext.User.Identity”,这是同一对象。在本地调试时,它显示corect身份(作为呼叫者的本人)。在IIS上部署后,我得到“ MachineName \ ApplicationPoolIdentity”

MVC控制器的外观如下:

    [Route("api/[controller]")]
    [ApiController]
    [Authorize]
    public class DatabaseSystemsController : CustomControllerBase
    {
        // GET: api/DatabaseSystems
        [HttpGet("/api/AllDatabaseSystems")]
        public async Task<ActionResult<IEnumerable<DatabaseSystem>>> GetAllDatabaseSystems()
        {
            try
            {
                var identity = HttpContext.User.Identity
                ...
                return await _context.DatabaseSystems.ToListAsync();
            }
            catch (Exception)
            {
                ...
            }
        }
    }

我希望有人可以提供帮助。 预先感谢

L。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)