我有一个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为空。
显然我在这里遗漏了一些东西,但我不知道是什么。
默认情况下,Visual Studio的IISExpress设置启用了匿名身份验证。
您需要在项目的属性上将其关闭。