Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET MVC表单身份验证-调试IsInRole()?_.net_Forms Authentication_Global Asax - Fatal编程技术网

.NET MVC表单身份验证-调试IsInRole()?

.NET MVC表单身份验证-调试IsInRole()?,.net,forms-authentication,global-asax,.net,Forms Authentication,Global Asax,我正在MVC网站上使用表单身份验证。我使用Visual Studio中的默认ASP.NET配置选项管理用户和角色。到目前为止一切都很好 我可以在视图中成功地执行Page.User.IsInRole(“主持人”)True按预期返回 但是,在调用Context.User.IsInRole(“主持人”)的Global.asax应用程序\u PostAuthenticateRequest()(或者循环中的任何后续事件)时,将返回False 页面用户和上下文用户之间有什么区别?如何在Global.asax

我正在MVC网站上使用表单身份验证。我使用Visual Studio中的默认ASP.NET配置选项管理用户和角色。到目前为止一切都很好

我可以在视图中成功地执行
Page.User.IsInRole(“主持人”)
True
按预期返回

但是,在调用
Context.User.IsInRole(“主持人”)
Global.asax
应用程序\u PostAuthenticateRequest()
(或者循环中的任何后续事件)时,将返回
False


页面用户和上下文用户之间有什么区别?如何在Global.asax中获得相同的(预期的)结果?

在这个阶段,上下文可能仍然在aspnet帐户或运行应用程序池的帐户下运行。您可能希望执行一个测试,在该测试中创建Global.asax中可用的两个(或全部)事件,并将Context.User.Name的结果打印到文本文件中。然后,您可能会看到名称是否存在任何值。我所看到的是,当站点以aspnet帐户运行时,名称将为空

您可能还希望检查与数据库的连接,并查看在Context.User.IsInRole(“版主”)返回false时,谁正在尝试登录数据库


另外,(这是在黑暗中拍摄的),您可能想看看Thread.CurrentPrincipal.IsInRole(“主持人”)给了您什么。我希望这些建议将有助于调试。

在这一阶段,上下文可能仍在aspnet帐户或运行应用程序池的帐户下运行。您可能希望执行一个测试,在该测试中创建Global.asax中可用的两个(或全部)事件,并将Context.User.Name的结果打印到文本文件中。然后,您可能会看到名称是否存在任何值。我所看到的是,当站点以aspnet帐户运行时,名称将为空

您可能还希望检查与数据库的连接,并查看在Context.User.IsInRole(“版主”)返回false时,谁正在尝试登录数据库


另外,(这是在黑暗中拍摄的),您可能想看看Thread.CurrentPrincipal.IsInRole(“主持人”)给了您什么。我希望这些建议将有助于调试。

非常好的建议!我发现IsInRole()确实在
PostAuthenticateRequest
中返回了不同的结果,然后在
AuthorizeRequest
中返回了不同的结果(AuthorizeRequest似乎给出了正确的(预期的)结果)。很棒的建议!我发现IsInRole()确实在
PostAuthenticateRequest
中返回了不同的结果,然后在
AuthorizeRequest
中返回了不同的结果(AuthorizeRequest似乎给出了正确的(预期的)结果)。