Я пытаюсь включить поддержку IDN / IRI для класса URI, потому что мне нужен метод «Uri.IsWellFformedUriString» на немецких доменах умлаута (например, www.bücher.de).
Я нашел аналогичный вопрос в https://stackoverflow.com/a/6107682/413531 (взято из http://msdn.microsoft.com/en-us/library/system.uri.aspx в разделе «Поддержка международных идентификаторов ресурсов»), но решение у меня не работает. Мой текущий файл app.config выглядит примерно так:
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="..." type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<!-- ... some sections in here ... -->
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<!-- ... some sections in here ... -->
</sectionGroup>
</configSections>
<userSettings>
<!-- ... some settings in here ... -->
</userSettings>
<applicationSettings>
<!-- ... some settings in here ... -->
</applicationSettings>
</configuration>
когда я просто добавляю
<uri>
<idn enabled="All" />
<iriParsing enabled="true" />
</uri>
как другой дочерний элемент в конце, создается исключение: ConfigurationErrorsException - {"Das Konfigurationssystem konnte nicht initialisiert werden."}
Я читаю дальше в http://msdn.microsoft.com/en-us/library/system.uri.aspx наткнулся на
Обработкой IRI и IDN в классе Uri также можно управлять с помощью классов параметров конфигурации System.Configuration.IriParsingElement, System.Configuration.IdnElement и System.Configuration.UriSection. Параметр System.Configuration.IriParsingElement включает или отключает обработку IRI в классе Uri. Параметр System.Configuration.IdnElement включает или отключает обработку IDN в классе Uri. Параметр System.Configuration.IriParsingElement также косвенно управляет IDN. Обработка IRI должна быть включена для возможности обработки IDN. Если обработка IRI отключена, для обработки IDN будет установлено значение по умолчанию, при котором поведение .NET Framework 2.0 используется для совместимости, а имена IDN не используются.
К сожалению, мне не удалось найти пример использования System.Configuration.IriParsingElement, System.Configuration.IdnElement и System.Configuration.UriSection. Понятия не имею, как они используются ...
В общем, моя проблема сводится к следующему: я хочу включить поддержку IDN / IRI в классе URI, но не могу понять, как это сделать. Конфигурационное решение у меня не работает, поэтому я хотел бы попробовать его по коду, но не могу понять, как это сделать. Кстати. Я также хотел бы знать, почему не работает конфиг;)