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

时间:2008-10-20 05:43:11

标签: asp.net-mvc redirect iis-6 http-status-code-404

我可能忽略了一些非常简单的内容,但我尝试将所有错误的网址重定向到根据条件过滤网址的操作,然后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有关,但在IIS6下,没有.mvc的URL不会被发送用于ASP.NET MVC处理。

1 个答案:

答案 0 :(得分:7)

当您部署到服务器时,很可能没有调用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/