Guid в Querystring как-то трансформируется - PullRequest
9 голосов
/ 09 ноября 2011

Я не уверен, почему это происходит, но вот несколько деталей, которые могут помочь найти решение:

  • Кажется, что работает корректно на большинстве компьютеров Firefox и IE
  • Это происходит с определенными гидами, когда другие работают
  • Мы переводим брандмауэр в режим монитора и все еще происходит

Это строка в 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 ]

1 голос
/ 09 ноября 2011

A Guid - это Structure, поэтому вы должны проанализировать его, когда он проходит через строку запроса, как String:

Guid PageEditId = Guid.Parse(Request.QueryString["id"]); //add null checks or use TryParse
0 голосов
/ 09 ноября 2011

Я думаю, - не является допустимым символом для значения строки запроса, закодируйте его:

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