Request.ServerVariables [“LOGON_USER”]或Current.User.Identity.Name为空

时间:2011-10-26 14:04:57

标签: asp.net-mvc-3 iis-7.5

我正在使用表单身份验证,应用程序池设置为经典我已启用表单身份验证和匿名访问,并且我已禁用Windows身份验证。我仍然无法读取LOGON_USER或IPrincipal.Identity.Name。

在IE9中,我将用户身份验证设置为使用当前用户名和密码进行自动登录。

但我仍然无法检索当前登录的用户。

可能缺少什么?这是IIS7.5中的重大变化还是IE9中的变化?

注意我不能只启用Windows身份验证,因为此站点在外部和内部使用。此外,客户希望被定向到登录页面,而不是用用户/密码提示进行质询。

1 个答案:

答案 0 :(得分:0)

切换到classic时,它返回403状态,无法处理请求。

最后我改变了路由表,使用扩展名如下:

        routes.MapRoute(
            "Default", // Route name
            "{controller}.mvc/{action}/", // URL with parameters
            new { controller = "Login", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRoute("Root", string.Empty, new { controller = "Login", action = "Index"});

然后我添加了一个新的通配符映射来处理* .mvc扩展名。

还要确保您在我的解决方案中使用正确的应用程序池标识我正在使用NetworkService帐户,并且我还在Web文件夹上授予了NetworkService帐户的完全权限。