.NET MVC项目页面请求循环重定向的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET MVC项目页面请求循环重定向的问题相关的知识,希望对你有一定的参考价值。

我自己做了一个MVC 项目,设置了登录页面,项目启动后该页面无法打开,并一直提示“Firefox 检测到该服务器正在将此地址的请求循环重定向”
具体代码如下:
usercontroller见图片

login.cshtml如下
@
Layout = null;@model Platform.Models.UserModel<!DOCTYPE html><html><head> <title>LoginTestPage</title></head><body> <form action="/User/Login" method="POST"> <center> 用户名:<input type="text" value="@this.Model.UserName" name="userName" /><br /> 密码:<input type="text" value="@this.Model.UserPwd" name="userPwd" /><br /> <span style="color:Red"> @this.ViewData["error"] </span> @ string str = this.Model.SaveUser ? "checked='checked'" : string.Empty; 记住账号:<input type="checkbox" name="SaveUser" value="true" @str /><br /> <input type="submit" value="登录" /> </center> </form></body></html>

有两种可能:

    客户端.也就是浏览器方面的问题,例如你用了广告拦截插件等?(这个可能我在网上看的)

    服务器端.MVC你有两个control : A和B...然后A这边redirect到B...完了B又redirect到A..就这样转来转去.这样的话大概是你login和home的逻辑有问题


usercontroller 的login有跳转homecontroller的index页面的代码

想必,homecontroller的index页面也有直接或者间接跳转到usercontroller 的login(httppost)的代码


其实做几个标记调试下看看怎么跑的就完了

参考技术A 把你那个httpget去掉就好了,上面加HTTPpost或者get的意思为post提交或者get提交,而你这个第一步是通过控制器返回页面用的,你直接加上这个肯定找不到了追问

我去掉了httpget()也不行

追答

那你跟踪调试下,看看是不是进第一个方法了,提交后是不是进post方法了

将所有请求重定向到 IIS6 上的 ASP.NET MVC

【中文标题】将所有请求重定向到 IIS6 上的 ASP.NET MVC【英文标题】:Redirect all requests to ASP.NET MVC on IIS6 【发布时间】:2010-09-18 01:42:33 【问题描述】:

我可能在这里忽略了一些非常简单的事情,但我正在尝试将所有错误的 URL 重定向到根据条件过滤 URL 的操作,然后 301 重定向到合适的页面或发出 404 页面。

为此,我在路由表的末尾有一条这样的路由:

routes.MapRoute("Error", "*url", new  controller = "Main", action = "Error" ); 

还有这样的动作:

public ActionResult Error(string url)

        if (/* Conditions are met... */)
        
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", /* Destination URL */);
            Response.End();
        

        Response.StatusCode = 404;
        return View(/* 404 page... */));

这在本地完美运行。

但是,当部署到 IIS6 时,不包含 .mvc(例如 oldfile.php)的 URL 永远不会发送到 ASP.NET 进程进行路由。

有没有简单的解决方案/我忽略了什么?

编辑: 这与this question 相关,但是在没有 .mvc 的 IIS6 下,不会发送用于 ASP.NET MVC 处理的 URL。

【问题讨论】:

【参考方案1】:

当您部署到服务器时,很可能没有调用 ASP.Net。

我会在 IIS 中设置通配符映射,以便您的请求将使用 ASP.Net 来处理请求。

打开 IIS 管理器,右键单击您的应用程序,转到“属性”,然后转到“主目录”选项卡,然后单击“配置”。在通配符应用程序映射下,单击插入(不是添加,这在上面令人困惑),然后为“可执行文件”输入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,并取消选中验证文件是否存在。

有关更多信息,请访问帮助我解决此问题的来源:http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

【讨论】:

我第一次尝试这个时,我没有注意到需要取消选中“验证该文件是否存在”。

以上是关于.NET MVC项目页面请求循环重定向的问题的主要内容,如果未能解决你的问题,请参考以下文章

将所有请求重定向到 IIS6 上的 ASP.NET MVC

为啥我的 mvc 项目重定向到默认的 403 错误页面,而不是我重定向到的页面,而不是在本地的 IIS 上?

使用 asp.net MVC 以编程方式重定向到 404 页面

在 ASP.Net MVC3 中重定向到不影响 URL 的区域

在asp.net mvc中注册成功(重定向到登录)后用户名自动填写登录页面

重定向到登录页面时,asp.net/iis 不附加 ReturnUrl