Url编码究竟是如何工作的?

时间:2011-12-08 16:50:50

标签: asp.net-mvc url encoding

在MVC中,我尝试使用URL路由来获取给定某个输入的操作结果。

在我的观点中考虑以下内容:

<%=Html.ActionLink("View", "Test", new with {.id = Url.Encode(dir\file}) %>

我的控制器然后使用HttpUtility.UrlDecode(id)来获取原始内容。控制器本身正在使用File()来检索指定目录\文件位置的文件。但是,弹出一条错误消息告诉我

A potentially dangerous Request.Path value was detected from the client (%).

网址显示为

http://home/dir%255cfile.txt

我用谷歌搜索了网址编码,\被编码为%5c。 %25来自哪里?它是%的编码,但这意味着Encode正在进行两次。为什么会这样,是应该发生的呢?

1 个答案:

答案 0 :(得分:1)

Html.ActionLink会为您处理URL编码。如果你没有对params进行编码,则无需再次对其进行解码,问题就解决了。