none
Проблема со ВСЕМИ серверными контролами ASP.NET использующими URL в национальных доменах RRS feed

  • Вопрос

  • Проблема со ВСЕМИ серверными контролами ASP.NET использующими URL в национальных доменах

    Функция HttpServerUtility.UrlEncode работает неверно.

    Ошибочно перекодирует хостовую часть URL адреса. Например: http://имкн.рф преобразует в http%3a%2f%2f%d0%b8%d0%bc%d0%ba%d0%bd.%d1%80%d1%84%2f последнее разумеется никто, кроме Google Chrome понять не может (даже IE)
    Самое плохое состоит в том, что на эту функцию или на её идентичный аналог полагаются все серверные контролы - LinkButton, NyperLink, TreeView в купе с SiteMap и т.д.
    В результате пользоваться этими контролами в национальном домене становится невозможно.
    Хотелось бы узнать, когда будет починена функция и будут правильно работать серверные контролы
    16 ноября 2012 г. 7:54

Все ответы

  • А зачем Вам кодировать часть хостового адреса, это вовсе не нужно. Не кодируйте эту часть и всё.
    16 ноября 2012 г. 9:55
    Модератор
  • как вам сказать...

    вот есть у меня web.sitemap, а в нем есть строчка - <siteMapNode title="» АРМ «Диспетчер»" url="http://имкн.рф"/>

    пользователь щелкает по сгенерированной контролом ссылке и попадает на  http%3a%2f%2f%d0%b8%d0%bc%d0%ba%d0%bd.%d1%80%d1%84%2f. Браузер этого адреса не понимает и говорит - ку.

    или при динамическом назначении адреса в asp:HyperLink - догадайтесь что будет при указании DNS хоста в русскоязычном домене.

    А ноги у всего этого растут из упомянутой выше функции. Поэтому самый оптимальный вариант - исправить функцию, и все контролы заработают как надо. 

    Ну или переписать все контролы, так как советуете Вы - чтобы они не кодировали хостовую часть URL.

    Так, что Ваш совет совсем не хелпфул.

    ;-(

    16 ноября 2012 г. 16:22
  • Про переписать забудьте, контролы были написаны до ввода подобных доменов. Наследуйтесь от стандартных классов контролов, переопределив функции, если они виртуальные. Если нет, поступайте как я показал высше. Одним словом нужно поработать в коде.
    18 ноября 2012 г. 17:04
    Модератор
  • Привет.

    Свой отзыв и багрепорт вы можете оставить на сайте Microsoft Connect

    Спасибо.


    Для связи [mail]

    29 ноября 2012 г. 14:13
    Модератор