私はdnsdynamic.orgを使用して、自宅でホストされている個人のWebサイトを指し示しています。私の自宅のIPアドレスは月に1回頻繁に変更されます。dnsdynamic.orgは、IPを更新するためのWebメソッド呼び出しを提供します。
https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.info&myip=127.0.0.1
これをブラウザから呼び出すと、完璧に機能します。これをc#コードで呼び出そうとすると、次の例外がスローされます。
Invalid URI: Invalid port specified.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Net.WebRequest.Create(String requestUriString)
URLにコロンがあるため、system.uriはパスワードを整数として解析しようとしているように見えます。
.orgの後にポートを追加してみました
https://username:password@www.dnsdynamic.org:443
これでは運が悪い。
誰かがこのエラーを解決する方法を教えてもらえますか?
uriを作成しているときに、エスケープしないオプションとエスケープオプションを試してみましたが、まだ機能しません。
var ri = new Uri("https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.info&myip=127.0.0.1",true);
編集:ユーザー名が問題を引き起こしているようです。私のユーザー名は私のメールアドレスです。そして私のメールアドレスは*.comで終わります。そのため、URIは私のパスワードを解析しようとしています。
この問題を解決する解決策はまだ見つかりません。dnsdyanmic.orgはメールアドレスをユーザー名として使用しているため、ユーザー名を変更できません。