我有一个使用OpenSearch
搜索产品的C#MVC 3项目。如果搜索词是一个单词,则搜索很好,但是如果我输入类似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
您可以如下使用System.Uri.EscapeUriString
:
System.Uri.EscapeUriString
并且因为它也在“客户端配置文件”中提供,所以比使用Uri.EscapeUriString("double space") //double%20%20space
API更可移植。
您可以在System.Web
的帮助下完成
在此示例中,字符串“ ASP.NET示例”被编码为“ ASP.NET + Examples”。
HttpServerUtility.UrlEncode Method
在我的案例中,我发现有一个JavaScript函数调用了ASPX页面,并且在构建URL时,我不小心将URL放置如下:
Server.UrlEncode("ASP.NET Examples");
您知道,页面请求中的第一个参数由?分配。不是&,所以一个简单的错字引起了HTTP 404.11。相反,它应该是:
var url = forwardpage + "&t=" + token;