【问题标题】:Redirect all requests to ASP.NET MVC on IIS6将所有请求重定向到 IIS6 上的 ASP.NET MVC
【发布时间】: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。

【问题讨论】:

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


    【解决方案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/

    【讨论】:

    • 我第一次尝试这个时,我没有注意到需要取消选中“验证该文件是否存在”。
    猜你喜欢
    • 2013-04-03
    • 2013-02-15
    • 2016-10-23
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多