【发布时间】:2013-03-20 20:28:14
【问题描述】:
我正在使用 dnsdynamic.org 指向我家中托管的个人网站。我的家庭IP每个月都会经常更换一次。 dnsdynamic.org 提供了一个 web 方法调用来更新 ip。
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 使用电子邮件地址作为用户名。
【问题讨论】:
-
我刚刚将您的代码复制到了一个新的 Visual Studio 项目中,它按原样运行。
-
在 3.5 和 4.5 中也适用于我;您使用的是什么版本的 .NET?
-
谢谢你指点我。问题似乎是我的用户名有 *.com。我的用户名是我的电子邮件地址。请使用电子邮件地址而不是用户名尝试相同的代码。
标签: c# httpwebrequest uri