簡體   English   中英

無效的URI:當url具有多個冒號時指定的端口無效

[英]Invalid URI: Invalid port specified when url has more than one colon

我正在使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM