【问题标题】:Guid in Querystring is being transformed somehowQuerystring 中的 Guid 正在以某种方式进行转换
【发布时间】:2011-11-09 14:02:24
【问题描述】:

我不确定为什么会发生这种情况,但这里有一些细节可能有助于找到解决方案:

  • 它似乎在大多数计算机 firefox 和 IE 上都能正常工作
  • 某些 Guid 在其他人工作时会发生这种情况
  • 我们将防火墙置于监控模式,但仍然出现

这是 PageModify.aspx 中构建查询字符串的行:

Response.Redirect(string.Format("Editor.aspx?id={0}", pageId,
    CultureInfo.CurrentCulture));

这是一切正常时查询字符串的输出:

https://example.com/Editor.aspx?id=1dfz342b-3a4d-4255-8054-93916324afs6

这是重定向到 Editor.aspx 时在浏览器中看到的内容:

https://example.com/Editor.aspx?id=1dfz342b-3a4d-xxxxxxxxxxxxxxx324afs6

当然,当这条线运行时,我们会得到一个无效的 guid 错误:

_PageEditId= new Guid(Request.QueryString["id"]);

有人看过吗?难道是IIS设置?这里没有做任何特别的事情,每个人的系统都有相同的基线。它发生在内部和外部客户身上。

【问题讨论】:

  • pageId 是否实际输入为Guid
  • 看起来像您使用个人信息监视器会得到的那种行为。仅当 GUID 组件为数字时才会发生这种情况吗?也许它认为这是一个 SSN 或电话号码,为了隐私而将其删除。
  • Mark Peters - Bing,这是一个默认的防火墙设置,它掩盖了似乎是信用卡号的内容。谢谢!
  • @Tom。您应该回答自己的问题并将其标记为已解决。

标签: c# asp.net .net iis firewall


【解决方案1】:

GuidStructure,所以当它通过查询字符串作为String 出现时,您必须对其进行解析:

Guid PageEditId = Guid.Parse(Request.QueryString["id"]); //add null checks or use TryParse

【讨论】:

  • @rick:Guid 构造函数将尝试解析您传递给它的任何字符串。无需显式调用Parse
  • @tom 你为什么不检查这个答案?
【解决方案2】:

我认为- 不是查询字符串值的有效字符,对其进行编码:

Response.Redirect(string.Format("Editor.aspx?id={0}", Server.UrlEncode(pageId),
CultureInfo.CurrentCulture));

【讨论】:

  • 我可以转到该页面并按应有的方式进行编辑,但有几个人不能,并且会引发服务器错误。都具有与 Id 相同的 Guid。
猜你喜欢
  • 2022-01-26
  • 2018-08-27
  • 2012-04-12
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
相关资源
最近更新 更多