HTTP错误404.11未找到:双转义序列

时间:2012-08-15 04:52:39

标签: c# asp.net-mvc-3 escaping urlencode

我有一个C#MVC 3项目,它使用OpenSearch来搜索产品。如果搜索词是一个单词但是如果我输入类似canned food的内容,那么搜索就可以了,那么我得到HTTP Error 404.11。 我知道解决此问题的一种简单方法是将allowDoubleEscaping设置为true中的webconfig。但我的朋友建议我使用escaping url代替space%20(如果我错了,请更正我,因为我是新手)

我见过许多使用UrlPathEncode的例子,但我不确定在我的项目中添加此代码的位置。

基本上我只是问我该如何做到这一点:

localhost:94830/Home/Search/canned food

进入这个

localhost:94830/Home/Search/canned%20food 

或用其他字符替换空格

localhost:94830/Home/Search/canned-food

3 个答案:

答案 0 :(得分:3)

您可以按如下方式使用System.Uri.EscapeUriString

Uri.EscapeUriString("double  space") //double%20%20space

并且它也可以在“客户端配置文件”中使用,它比使用System.Web API更便携。

答案 1 :(得分:0)

您可以在HttpServerUtility.UrlEncode Method

的帮助下完成此操作

在此示例中,字符串“ ASP.NET示例”编码为“ ASP.NET +示例”。

Server.UrlEncode("ASP.NET Examples");

答案 2 :(得分:0)

在我的案例中,我发现有一个JavaScript函数调用了ASPX页面,当它构建URL时,我无意间将URL放置如下:

var url = forwardpage + "&t=" + token;

如您所知,页面请求中的第一个参数由?分配。不是&,所以一个简单的错字引起了HTTP 404.11。相反,它应该是:

var url = forwardpage + "?t=" + token;