2011-02-08 43 views
2

我试图找到一种方法来防止用户访问特定的XML文件。我试着做...Asp.net MVC路由 - 防止路由到一个约束的XML文件

routes.MapRoute(
    "SiteMap", 
    "SiteMap/siteMap.xml", 
    new { }, 
    new { isLocal = new LocalHostRouteConstraint() }); 

凡LocalHostRouteConstraint()是...

public class LocalHostRouteConstraint : IRouteConstraint 
{ 
    public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     return !httpContext.Request.IsLocal; 
    } 
} 

这是此页上实现......

http://www.asp.net/mvc/tutorials/creating-a-custom-route-constraint-cs

但路由仍然被允许访问xml!

有没有另一种方法来防止这种情况?

编辑 忘了提及忽略!在LocalHostRouteConstrsint类中。这样做是为了测试它的工作。

+0

什么是你想实现什么?你为什么不使用routes.IgnoreRoute(“SiteMap/siteMap.xml”)? – frennky 2011-02-08 21:57:58

+0

你也可以尝试`routes.IgnoreRoute(“{* sitemap}”,新{sitemap = @“(。* /)?siteMap.xml(/.*)?”});` – 2011-02-08 22:32:25

回答

1

限制必须在MVC路线中吗?

如果没有,你可以把下面的就在你web.config</configuration>结束标记之前:

<location path="SiteMap/siteMap.xml"> 
    <system.web> 
     <authorization> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</location>