我使用 MVC 的包罗万象的路由来提供应用程序中资源的路径。它看起来像这样:
_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 出于安全原因抱怨双重转义,而且我认为我不应该打开那个蠕虫罐头。
有什么方法可以使包罗万象的路线不逃避斜杠吗?