C# ASP.NET HttpHandler映射到Robots.txt而不访问IIS

C# ASP.NET HttpHandler映射到Robots.txt而不访问IIS,c#,.net,asp.net-mvc,iis,httphandler,C#,.net,Asp.net Mvc,Iis,Httphandler,是否有一种只使用web.config将/robots.txt映射到HttpHandler的简单方法?我尝试了对httpHandlers标记的各种更改,但没有任何改变。所有示例都需要修改IIS站点属性,我无法访问这些属性 是否有一种仅使用web.config映射的方法: <add verb="*" path="/robots.txt" type="Site.RobotsHandler" /> 正确吗 我目前正在使用.NET 3.5和MVC2。如果您使用的是MVC,为什么不创建一个

是否有一种只使用web.config将/robots.txt映射到HttpHandler的简单方法?我尝试了对httpHandlers标记的各种更改,但没有任何改变。所有示例都需要修改IIS站点属性,我无法访问这些属性

是否有一种仅使用web.config映射的方法:

<add verb="*" path="/robots.txt" type="Site.RobotsHandler" />

正确吗


我目前正在使用.NET 3.5和MVC2。

如果您使用的是MVC,为什么不创建一个到操作的路由并在那里处理它,而不是创建另一个处理程序

routes.MapRoute("robots.txt", "robots.txt", new { controller = "Home", action = "Robots" });
根据评论进行编辑

routes.IgnoreRoute("{file}.txt", new { pathInfo = new RobotsIgnore() });

public class RobotsIgnore : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return values[parameterName].ToString().ToLowerInvariant() != "robots.txt";
    }
}

根据对其他答案的一些评论,我猜你在用iis6?据我所知,不可能通过web配置更改iis6处理程序映射。如果不更改默认映射,txt文件将永远无法到达asp.net。

这是我尝试的第一件事。。。它似乎不适用于静态文件。您刚刚得到“资源找不到”。错误,好像它正在直接查找robots.txt。根据您的评论编辑我的答案,看看这是否有帮助。我使用了非常类似的代码来处理css文件,处理方式与处理robots.txt文件相同。基本上,你告诉路由处理器忽略除robots.txt之外的所有.txt文件,然后确保你仍然使用我给你的初始路由,并且它应该工作没有区别,你改变了什么?我认为这里的区别是CSS文件直接由asp.net和mvc处理,但是txt文件被交给了静态文件处理程序。对不起,它从来没有发布我的更改,只有我的评论。您使用的是哪个iis版本?