3

我正在使用带有 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 出于安全原因抱怨双重转义,而且我认为我不应该打开那罐蠕虫。

有什么办法可以使包罗万象的路线不逃脱斜线吗?

4

0 回答 0