1

我在 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。

谢谢

4

1 回答 1

3

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

在为在请求路径中获得疯狂的东西所做的所有努力之后,值得一提的是,简单地将值保留为查询字符串的一部分(还记得本文开头的 WAY 吗?)更容易、更清洁、更灵活,而且更多安全的。

因此,基本上最好为此使用 url 编码的查询字符串参数,而不是在可能会失败的战斗中与 IIS 对抗。

于 2013-01-31T08:51:44.217 回答