C# Querystring中的Guid正在以某种方式进行转换
我不知道为什么会发生这种情况,但以下是一些可能有助于找到解决方案的细节:C# Querystring中的Guid正在以某种方式进行转换,c#,asp.net,.net,iis,firewall,C#,Asp.net,.net,Iis,Firewall,我不知道为什么会发生这种情况,但以下是一些可能有助于找到解决方案的细节: 在大多数计算机上,firefox和IE似乎都能正常工作 当其他guid工作时,它会出现在某些guid上 我们将防火墙置于监视模式,但仍会发生 这是PageModify.aspx中生成查询字符串的行: Response.Redirect(string.Format("Editor.aspx?id={0}", pageId, CultureInfo.CurrentCulture)); 这是在一切正常时查询字符串的
- 在大多数计算机上,firefox和IE似乎都能正常工作
- 当其他guid工作时,它会出现在某些guid上
- 我们将防火墙置于监视模式,但仍会发生
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设置吗?这里没有做什么特别的事情,每个人的系统都有相同的基线。内部和外部客户都会遇到这种情况。我认为
-
不是查询字符串值的有效字符,请将其编码为:
Response.Redirect(string.Format("Editor.aspx?id={0}", Server.UrlEncode(pageId),
CultureInfo.CurrentCulture));
A是A,因此当它作为字符串通过查询字符串时,您必须对其进行解析:
Guid PageEditId = Guid.Parse(Request.QueryString["id"]); //add null checks or use TryParse
pageId
是否实际键入为Guid
?看起来像是个人信息监视器的行为。它是否仅在GUID组件为数字时发生?也许它认为这是一个SSN或电话号码,并出于隐私考虑将其删除。Mark Peters-Bing,这是一个默认的防火墙设置,屏蔽了似乎是信用卡号码的内容。谢谢@汤姆。您应该回答自己的问题并将其标记为已解决。我可以转到该页面并按其应做的方式进行编辑,但有几个人不能这样做,因此会引发服务器错误。都具有与Id相同的Guid。@rick:Guid
构造函数将尝试解析您传递给它的任何字符串。不需要显式调用Parse
。@tom你为什么不检查这个答案?