mvc robots.txt路由无法正常工作

时间:2014-11-04 10:34:49

标签: asp.net-mvc

这是我的RouteConfig文件:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute("Robots.txt",
        "robots.txt",
        new { controller = "Home", action = "Robots" });

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

www.mysite.com/Robots.txt时,我得到404。

在我的HomeController中,我有一个Robots()动作。

我可能做错了什么?

编辑:转到www.mysite.com/Robots会给我一个服务器错误404.转到www.mysite.com/Robots.txt会给我一个IIS 404错误。这可能与它有关吗?

转到www.mysite.com/Home/Robots有效,但www.mysite.com/Home/Robots.txt提供了IIS 404。

2 个答案:

答案 0 :(得分:1)

您真的需要在www.mysite.com/robots.txt以外的其他位置使用robots.txt吗?

否则只需:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("robots.txt");
}

将文件放在Visual Studio的根文件夹中。

答案 1 :(得分:1)

这是一个较晚的答复,但是如果遇到其他人,IIS会选择该扩展名并尝试将其作为静态文件进行管理。它没有到达路由模块。

您可以使用runAllManagedModulesForAllRequests禁用此功能,但会影响性能。安迪·布朗(Andy Brown)在此处列出了许多解决方案和详细说明:https://stackoverflow.com/a/17037935/522859