Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 3 这一页不是';t使用MVC3+正确重定向错误;AJAX+;表单身份验证_Asp.net Mvc 3_Redirect Loop - Fatal编程技术网

Asp.net mvc 3 这一页不是';t使用MVC3+正确重定向错误;AJAX+;表单身份验证

Asp.net mvc 3 这一页不是';t使用MVC3+正确重定向错误;AJAX+;表单身份验证,asp.net-mvc-3,redirect-loop,Asp.net Mvc 3,Redirect Loop,编辑:删除了不相关的代码/描述,因为问题不仅仅与初始代码有关 我有一个基于MVC3的应用程序,它使用大量Ajax调用(比如jqGrid)和表单身份验证。我还在某些控制器/操作上使用[Authorize]属性,在大多数情况下,我使用Ajax调用这些控制器/操作。我的应用程序经常会出现“此页面未正确重定向”或“此页面有重定向循环”的情况 我和菲德勒查过了。在以用户身份登录并尝试访问需要身份验证的页面后,有时我会被重定向到Account/LogOn,然后进入无限循环。这通常发生在我通过Ajax调用调用

编辑:删除了不相关的代码/描述,因为问题不仅仅与初始代码有关

我有一个基于MVC3的应用程序,它使用大量Ajax调用(比如jqGrid)和表单身份验证。我还在某些控制器/操作上使用[Authorize]属性,在大多数情况下,我使用Ajax调用这些控制器/操作。我的应用程序经常会出现“此页面未正确重定向”或“此页面有重定向循环”的情况

我和菲德勒查过了。在以用户身份登录并尝试访问需要身份验证的页面后,有时我会被重定向到Account/LogOn,然后进入无限循环。这通常发生在我通过Ajax调用调用带有Authorize属性的任何控制器/操作时。应用程序似乎向帐户/登录发送了302重定向。然后,帐户/登录调用似乎重定向到自身。Fiddler上的textView显示如下内容

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Account/LogOn">here</a>.</h2>
</body></html>
这是我的主布局页面

<script type="text/javascript">
    $(document).ajaxError(function (xhr, props) {
        if (props.status == 401) {                
            location.reload();
        }
    });

</script>

$(文档).ajaxError(函数(xhr,props){
如果(props.status==401){
location.reload();
}
});
表单身份验证的My web.config设置具有以下内容

<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880"/>
    </authentication>


重定向每隔一段时间就会启动一次,并且它也不是使用相同的控制器/操作。只是看起来很随意。我不确定用户的cookie是否过期,是否由于某种原因导致此问题,或者它是否是应用程序池回收的问题。任何关于如何解决这一问题的建议都将不胜感激。在过去的几天里,我们一直在努力解决这个问题,所以专家们的任何帮助都将是巨大的。感谢您

使用Authorize属性修饰您的操作方法,使其可供经过身份验证/登录的用户使用,然后检查用户角色。

我在上述代码中没有看到循环。但是,在controller1或controller2中的一个中,您可能会重定向回这个主/索引操作


我建议在测试站点时运行,当发生重定向循环时,您可以很容易地在那里检测到它,然后更容易找出代码的错误。

请查看链接问题中的答案。这就是我重定向循环问题的解决方案。谢谢你的投入


你好,维克兰特。谢谢,但是我需要这个操作方法对未登录的用户可用。如果不是登录用户,则显示View1。如果已登录并具有“客户端”角色,则显示view2 else view3。这就是要求。这将是一个更恰当的评论。答案是为了答案。评论仅供参考suggestions@Khudairy,两个控制器中都没有重定向。但是,它们使用Authorize属性。这会导致它发生吗?当然我不明白为什么。不管怎样,我会看看我能不能和Fiddler一起解决这个问题。这也不是一直都会发生。谢谢你这将是一个更恰当的评论。答案是为了答案。评论用于建议亲爱的@DaveA,您的评论在帮助中更合适section@AKhudairy:聪明的柜台。我佩服你想帮忙的冲动,但请注意,你的许多答案都是瞎猜。看一看。你的答案会被很多用户否决。我指出这一点,注意到您有可能成为StackOverflow的一个非常好的贡献者。
<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880"/>
    </authentication>