Querystring中的Guid正在以某种方式进行转换

时间:2011-11-09 14:02:25

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

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

  • 它似乎在大多数计算机上运行正常firefox和IE
  • 某些Guids会在其他人工作时发生
  • 我们将防火墙置于监控模式但仍然存在

这是构建查询字符串的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设置?这里没有什么特别的,每个人的系统都有相同的基线。它发生在内部和外部客户身上。

2 个答案:

答案 0 :(得分:1)

Guid是一个Structure,所以当它作为String的查询字符串出现时你必须解析它:

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

答案 1 :(得分:-1)

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

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