在MVC操作中接受url作为参数?

时间:2012-09-06 21:38:10

标签: asp.net-mvc razor

我正在使用ASP.NET MVC 3,我想接受url作为其中一个操作的参数。但是,我收到以下示例的“ HTTP错误400 - 错误请求。”错误。我该如何解决这个问题?

示例:

http://localhost:8343/http://google.com

的Global.asax.cs:

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

3 个答案:

答案 0 :(得分:1)

您需要对参数http://google.com使用URL编码。

所以,在这里导航:

http://localhost:8343/http%3A%2F%2Fgoogle.com

(我刚刚使用了在线URL encoder tool。)

答案 1 :(得分:1)

使用

HttpUtility.UrlEncode

Server.URLEncode

取决于您进行编码的位置。

答案 2 :(得分:1)

我按照以下步骤进行了修复。

  • 将Web项目属性更改为“使用IIS本地服务器”并选中“使用IIS Express”
  • 在Web.config中添加以下设置:
<httpRuntime requestPathInvalidCharacters=""/>