|
通常の System.Uri クラスのコンストラクタの動作として、最下位のドメイン(ホスト xxx.yyy.zzz のうちの xxx 部分)が数字だけで、かつホスト名に非 ASCII 文字を含んでいると、例外が出てインスタンスの生成に失敗するようです。 // Uri クラスは RFC 2396 に準拠した実装だそうですが、これらの挙動が RFC 的にどうなのかは調べてません。 で、インスタンスの生成に失敗したので WebBrowser.Url は null を返しているのでしょう。
.NET Framework でも、2.0 SP1 以降、国際化ドメイン名 (IDN) に対応できるように Uri クラスが変更されています。 IDN 有効とすることで、Uri クラスは上記の「最下位ドメインが数字だけでかつホスト名に非 ASCII 文字を含んでいる」パターンでも、例外を出さずに問題なくコンストラクトできるようになるようです。 ただ、強制的に IDN 有効にすると既存のコードに影響が出るので、構成ファイルによる設定で有効にするかどうか変更できるように実装されており、既定では無効になっています。 MSDN の Uri クラスの解説で machine.config レベル(要するにそのパソコン全体に影響する設定)の変更方法が書かれていますが、アプリケーションレベルで変更する場合、app.config に記述します。なお、section 要素は /configuration/configSections の子要素です(configSections 要素がない場合は追加して下さい。configSections は configuration の子要素の先頭である必要があります)。
|