1

我有一个OpenSearch用于搜索产品的 C# MVC 3 项目。如果搜索词是一个词,则搜索很好,但如果我输入类似的内容canned food,我会得到HTTP Error 404.11. 我知道解决此问题的一种简单方法是将allowDoubleEscapingequals 设置为truein webconfig。但是我的朋友建议我使用escaping urlwhich 来代替spacewith %20(如果我错了,请纠正我,因为我是新手)

我已经看到了很多说要使用的示例,UrlPathEncode但我不确定在我的项目中的何处添加此代码。

基本上我只是问我该怎么做:

localhost:94830/Home/Search/canned food

进入这个

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

或用另一个字符替换空格

localhost:94830/Home/Search/canned-food
4

3 回答 3

4

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

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

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

于 2012-08-15T05:04:56.807 回答
0

您可以在HttpServerUtility.UrlEncode 方法的帮助下完成

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

Server.UrlEncode("ASP.NET Examples");
于 2012-08-15T04:58:09.487 回答
0

我发现在我的案例中,我有一个调用我的 ASPX 页面的 JavaScript 函数,当它构建 URL 时,我不小心把 URL 放在了这样的位置:

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

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

var url = forwardpage + "?t=" + token;
于 2020-03-28T18:28:08.590 回答