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

问题描述 投票:1回答:3

我有一个使用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
c# asp.net-mvc-3 escaping urlencode
3个回答
3
投票

您可以如下使用System.Uri.EscapeUriString

System.Uri.EscapeUriString

并且因为它也在“客户端配置文件”中提供,所以比使用Uri.EscapeUriString("double space") //double%20%20space API更可移植。


0
投票

您可以在System.Web的帮助下完成

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

HttpServerUtility.UrlEncode Method

0
投票

在我的案例中,我发现有一个JavaScript函数调用了ASPX页面,并且在构建URL时,我不小心将URL放置如下:

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

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

var url = forwardpage + "&t=" + token;
© www.soinside.com 2019 - 2024. All rights reserved.