这是我的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。
答案 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