ASP.NET捕获所有路由并转义正斜杠

时间:2013-10-31 04:54:13

标签: asp.net-mvc asp.net-mvc-routing

我正在使用与MVC的catch-all路由来提供应用程序中资源的路径。它看起来像这样:

_routes.MapRoute(null, "Resource/{*resourcePath}", new { 
    controller = "Resource", 
    action = "Open" 
});

行动类似于

public ActionResult Open(string resourcePath) {
    string[] path = resourcePath.Split('/');
}

使用漂亮友好的URL点击它可以正常工作

/Resource/Path/To/Resource  
    path = ["Path", "To", "Resource"]

但是当我有一个带有正斜杠的资源名称(我当然是逃避)时,它会将转义的斜杠视为路径的一部分

/Resource/Path/To/Resource%2FWith%2FSlashes  
    path = ["Path", "To", "Resource", "With", "Slashes"]
    I expected ["Path", "To", "Resource/With/Slashes"]

我尝试了双重转义,只是为了让安全原因让ASP.NET抱怨双重转义,我认为我不应该打开那些蠕虫。

我有什么方法可以让这条全能的路线不会超越斜线?

0 个答案:

没有答案