2011-02-08 40 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>