I am using dnsdynamic.org to point to my personal website hosted at my home. My home ip will be frequently changing once a month. dnsdynamic.org provide a web method call to update ip.
https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.info&myip=127.0.0.1
When I call this through browser it works perfect. When I try to call this through c# code it throws the following exception.
Invalid URI: Invalid port specified.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Net.WebRequest.Create(String requestUriString)
Since there is a colon in the url it looks like system.uri try to parse my password as integer.
I tried adding a port after .org
https://username:password@www.dnsdynamic.org:443
no luck with this.
could someone please point me how to resolve this error.
I tried with don't escape and escape option while creating uri, still not working.
var ri = new Uri("https://username:password@www.dnsdynamic.org/api/?hostname=techno.ns360.info&myip=127.0.0.1",true);
EDIT: It looks like the username is causing the problem. My username is my email address. And my email address end with *.com. So uri is trying to parse my password.
Still no solution found to overcome this issue. I can't change my username since dnsdyanmic.org use the email address as username.
If you're using an
HttpWebRequest
to make the reqeust, you shouldn't include the credentials in the URI (as you can tell, it's invalid).You should instead add the credentials to the
HttpWebRequest
and let it handle passing them through: