0

我正在尝试从我使用查询字符串控制的 iis Web 服务器请求网页。

例如,我的 winforms 应用程序中有一个 webbrowser 控件并请求类似于“www.site.com/getpage.ashx?field=afsfgwesar+sere”的页面

当我尝试运行它时它失败了,因为在服务器端,getpage.ashx 找不到正确的字段。

在拉了很多头发之后,我发现字符串实际上已经从发送到浏览器的内容和接收到的内容发生了变化 - 即 - 当服务器开始使用它时,加号丢失了。

它以“afsfgwesar+sere”开头,以“afsfgwesarsere”结尾。那么沿着这条线的某个地方正在重新格式化字符串?

这就是我在服务器端获取字符串的方式 -

string field = (string)context.Request.QueryString["field"];

正是在这一点上,我介入并看到了缺失的加号。

有谁知道为什么我失去了加号以及如何找回它?

4

2 回答 2

2

+ 符号被替换为空格字符,因为空格不是允许的字符。

您可以在 URL 解码后插入%2B以“获取”加号。

www.site.com/getpage.ashx?field=afsfgwesar%2Bsere

HttpUtility具有对字符串进行 URL 编码和解码的方法。要了解它的基本功能,您还可以使用在线编码器/解码器

于 2010-01-30T13:34:45.007 回答
0

加号是查询字符串中的保留字符。它通常被解释为空格字符。只要看看搜索引擎,你就会注意到这一点。

您可以通过在将afsfgwesar+sere文本添加到查询字符串之前对其进行编码来防止这种情况。使用 HttpUtility.UrlEncode 这样做。使用 HttpUtility.UrlDecode 将其读回。

有关更多信息,请阅读:http: //msdn.microsoft.com/en-us/library/4fkewx0t.aspx

于 2010-01-30T13:35:48.660 回答