C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 認識しないURL


(過去ログ 83 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■49663 / inTopicNo.1)  認識しないURL
  
□投稿者/ ほし (1回)-(2010/05/12(Wed) 13:53:06)

分類:[C#] 

WebBrowserコントロールで

URL:http://3.xn--u9j7gaa5192c301d7ip.net/
日本語URL:http://3.ゲゲゲの鬼太郎.net/

this.webBrowser1.Navigate("http://3.xn--u9j7gaa5192c301d7ip.net/");

とすると、

this.webBrowser1.Url

が null になります。
他の日本語ドメインサイトはちゃんとNavigateされたのですが、このサイトだけ何度やってもダメでした。
原因はなんでしょうか?
引用返信 編集キー/
■49664 / inTopicNo.2)  Re[1]: 認識しないURL
□投稿者/ Hongliang (623回)-(2010/05/12(Wed) 16:08:45)
通常の 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 の子要素の先頭である必要があります)。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -