使用斜杠(/)%2f进行MVC3 URL编码问题 - 使用MVC路由在查询字符串中传递斜杠

时间:2013-01-31 08:49:09

标签: asp.net-mvc-3 url-rewriting url-routing

我在global.asax中定义了以下路由路径来处理url中的两个参数:

routes.MapRoute(
                "Default", // Route name
                "{page}/{th}", // URL with parameters
                new { controller = "Home", action = "Index", page = UrlParameter.Optional, th = UrlParameter.Optional } // Parameter defaults
            );

第一个参数是另一个网站的URL,即www.othersite.com/about /.

即使我将斜杠编码为%2f,也无法正确路由URL。我想用这样的东西:

http://{mywebsite}/www.othersite.net%2fabout%2f/{parameter2}

想要使用Base64编码,因为我希望URL可以如上所述。

我正在使用MVC 3。

由于

1 个答案:

答案 0 :(得分:2)

看看Scott Hanselman的following blog post,他解释了一些可能的解决方法。但结论是:

  

在完成所有这些努力以获得请求路径中的疯狂内容之后,就是这样   值得一提的是,只需将值保留为Query的一部分   字符串(记得在这篇文章的开头回答?)更容易,   更清洁,更灵活,更安全。

所以基本上最好为此使用url编码的查询字符串参数,而不是在可能会丢失的战斗中尝试与IIS作战。