ControllerContext.HttpContext.User为空

问题描述 投票:0回答:1

我有一个MVC项目,我从C#转换为VB,我有问题。该项目有一个扩展方法IsSysAdmin(),用于尝试获取登录用户名的ControllerBase类。该网站旨在使用Windows身份验证,并在根级别web.config中具有相应的条目以启用它,包括允许仅登录用户访问该站点的条目(拒绝用户=“?”)。 IsSysAdmin()函数由站点的共享布局视图中的Razor引用调用。

这是函数的VB代码:

<Extension()>
Public Function IsSysAdmin(ByVal controller As ControllerBase) As Boolean
    Dim bIsSysAdmin As Boolean = False

    Dim loggedInUser = controller.ControllerContext.HttpContext.User.Identity.Name

---- Other code

    Return bIsSysAdmin

End Function

这是C#代码:

    public static bool IsSysAdmin(this ControllerBase controller)
{        
    bool bIsSysAdmin = false;

    string loggedInUser = controller.ControllerContext.HttpContext.User.Identity.Name;

---- Other code

    return bIsSysAdmin;
}

C#版本没有问题。 loggedInUser变量获取实际登录的用户名。但是,在VB版本中,loggedInUser为空。

显然我在这里遗漏了一些东西,但我不知道是什么。

asp.net-mvc vb.net
1个回答
0
投票

默认情况下,Visual Studio的IISExpress设置启用了匿​​名身份验证。

您需要在项目的属性上将其关闭。

  1. 在解决方案资源管理器中选择项目。
  2. 单击F4
  3. 将匿名身份验证设置为已禁用
  4. 将Windows身份验证设置为已启用
© www.soinside.com 2019 - 2024. All rights reserved.