2012-04-23 30 views
0

有沒有簡單的方法將/robots.txt映射到僅使用web.config的HttpHandler?我已經對httpHandlers標籤進行了各種更改,但沒有任何改變。所有示例都需要修改IIS站點屬性,我無法訪問它們。ASP.NET HttpHandler映射到Robots.txt而無需訪問IIS

有僅使用web.config中映射的方式:

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

是否正確?

我目前使用.NET 3.5和MVC2。

+1

你正在使用哪個iis版本? – 2012-04-23 23:29:31

回答

0

基於了一些其他的答案我猜你正在使用IIS6的意見?據我所知,不可能通過web配置來改變iis6處理器映射。如果不更改默認映射,.txt文件將永遠不會到達asp.net。

1

如果您使用的是MVC,爲什麼不創建一個到Action的路由並在那裏處理它而不是創建另一個處理程序?

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

編輯基於COMMENT

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"; 
    } 
} 
+0

這是我嘗試的第一件事,它似乎不適用於靜態文件。你只是「找不到資源」。錯誤,好像它直接查找robots.txt。 – Rob 2012-04-23 19:50:56

+0

根據您的評論編輯我的答案,看看是否沒有幫助。我使用非常類似的代碼來處理css文件,其方式與您要處理robots.txt文件的方式相同。基本上你是告訴路由處理器忽略除robots.txt以外的所有.txt文件,然後確保你仍然使用我給你的初始路由,它應該可以工作 – 2012-04-23 19:59:38

+0

沒有區別,你改變了什麼? – Rob 2012-04-23 20:04:08