加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无效的URI:当url有多个冒号时指定的端口无效

发布时间:2020-12-16 01:53:49 所属栏目:百科 来源:网络整理
导读:我正在使用dnsdynamic.org指向我家中托管的个人网站.我家的ip会经常每月更换一次. dnsdynamic.org提供了一个更新ip的web方法调用. https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.infomyip=127.0.0.1 当我通过浏览器调用它时,它
我正在使用dnsdynamic.org指向我家中托管的个人网站.我家的ip会经常每月更换一次. 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使用电子邮件地址作为用户名.

解决方法

如果您使用HttpWebRequest来进行请求,则不应在URI中包含凭据(如您所知,它无效).

您应该将凭据添加到HttpWebRequest并让它处理它们通过:

// Only broke this up for readability
var uri = new Uri("https://www.dnsdynamic.org/api/?hostname=techno.ns360.info" + 
                  "&myip=127.0.0.1",true);
var cache = new CredentialCache();
cache.Add(uri,"Basic",new NetworkCredential("username","password"));

var request = WebRequest.Create(uri);
request.Credentials = cache;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读