为什么ASP.NET 4/IIS7 html编码我的查询字符串?
问题描述:
我们已将我们的测试环境之一切换到在IIS7上使用.NET 4。生产使用.NET 2.为什么ASP.NET 4/IIS7 html编码我的查询字符串?
某些URL,如
http://www.example.com/page.aspx?param1=<foo>¶m2=<foo>
没有得到我们的stringindex代码,查找<或>在Request.Url.ToString抓()。为什么?因为我们检查时他们显示为<foo>
。这工作在.NET 2.
发生了什么事?
注:格式中没有错误。我的意思是HTML编码。
答
查询字符串中的所有数据都需要进行URL编码以便能够正确解析,因此如果要抓取输入内容,需要URL解码查询字符串。
HttpServerUtility.UrlDecode(Request.QueryString);
http://msdn.microsoft.com/en-us/library/6196h3wt.aspx:
URL编码可确保所有浏览器将正确的URL字符串传递文本。诸如问号(?),&符号(&),斜杠标记(/)和空格之类的字符可能会被某些浏览器截断或损坏。因此,这些字符必须以标记或查询字符串编码,其中字符串可以由浏览器在请求字符串中重新发送。
不,数据正在** HTML **编码,而不是* URL *编码。 – Broam 2012-01-06 14:24:54