我有一个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
答案 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;