2013-06-18 7 views
7

Ich habe eine robots.txt, die nicht statisch sondern dynamisch generiert wird. Mein Problem besteht darin, eine Route von root/robots.txt zu meiner Controller-Aktion zu erstellen.Wie Route zu dynamischer robots.txt in ASP.NET MVC hinzufügen?

Diese arbeitet:

routes.MapRoute(
name: "Robots", 
url: "robots", 
defaults: new { controller = "Home", action = "Robots" }); 

Diese nicht funktioniert:

routes.MapRoute(
name: "Robots", 
url: "robots.txt", /* this is the only thing I've changed */ 
defaults: new { controller = "Home", action = "Robots" }); 

Die ".txt" verursacht ASP hier offenbar

Antwort

6

Antwort barf: url with extension not getting handled by routing. Wenn asp das "." Es ruft den statischen Dateihandler auf, sodass die dynamische Route nie verwendet wird. Die web.config-Dateien müssen geändert werden, damit /robots.txt nicht vom statischen Dateihandler abgefangen wird.

7

Sie müssen Ihrer Datei web.config Folgendes hinzufügen, damit die Route mit einer Dateierweiterung ausgeführt werden kann.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <!-- ...Omitted --> 
    <system.webServer> 
    <!-- ...Omitted --> 
    <handlers> 
     <!-- ...Omitted --> 
     <add name="RobotsText" 
      path="robots.txt" 
      verb="GET" 
      type="System.Web.Handlers.TransferRequestHandler" 
      preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

Siehe meinen Blog-Beitrag auf Dynamically Generating Robots.txt Using ASP.NET MVC für weitere Details.