我正在使用与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抱怨双重转义,我认为我不应该打开那些蠕虫。
我有什么方法可以让这条全能的路线不会超越斜线?