【问题标题】:HttpContext.User.Identity.Name not working on Azure serverHttpContext.User.Identity.Name 在 Azure 服务器上不起作用
【发布时间】:2020-04-19 03:21:30
【问题描述】:

我们正在将 MVC 网站应用程序移至 Azure 服务器。在 Azure 服务器上,我们已经安装了 Visual Studio 2015,并且当前成功运行了以下代码。但是在 IIS 上托管时,相同的代码不起作用

public class HomeController
{
        public ActionResult Index()
        {
              var user = HttpContext.User.Identity.Name.ToUpper()
              if(user==NULL)
              {
                Session["userLogin"] = "";
                return View("../Error/NotAuthorized");
              }
              else
              {
                Session["userLogin"] = user.DisplayName;
                Session["User"] = user;
                return View();
              }

        }
}

我在上面省略了一些不相关的代码。我仍然无法理解为什么当我从 VS 2015 调试时相同的代码可以工作,但在同一服务器的 IIS 上托管时却不能工作。我只在 IIS 中启用了 Windows 身份验证。请帮忙。

【问题讨论】:

  • 请解释确切的问题。当您说不工作时,您是否收到任何特定错误或在特定行失败?
  • 您的 Azure 托管的详细信息是什么?您提到您启用了Windows Authentication - Azure 服务器是否在相关 AD 中?
  • @RajeshG。你好。感谢您的答复。当我说不工作时,当我在 IIS 上托管时,用户被设置为 NULL。但是当我从 VS2015 localhost 运行相同的代码时,HttpContext.User.Identity.Name 正在返回我的用户名。当我尝试从 IIS 访问站点时,我通过服务器的 IP 访问。
  • @BrendanGreen。感谢您的答复。 Azure 托管是通过 Internet 而非 VNET 的 Azure 外部服务器。
  • 您是否在控制器、方法或主机配置上定义了Authorize 属性?

标签: c# asp.net .net asp.net-mvc azure


【解决方案1】:

您需要在 IIS 中的网站的应用程序池中将加载用户配置文件设置为 true。

如果有 AD 的话,也要给它正确的访问权限。

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 2019-01-08
    • 2012-09-03
    • 2015-11-24
    • 1970-01-01
    • 2017-05-17
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多