2013-03-20 2 views
3

dnsdynamic.org를 사용하여 집에서 호스팅되는 개인 웹 사이트를 가리 킵니다. 우리집의 IP는 한 달에 한 번씩 자주 바뀝니다. dnsdynamic.org는 IP 업데이트를위한 웹 메소드 호출을 제공합니다.잘못된 URI : URL에 콜론이 둘 이상있는 경우 잘못된 포트가 지정되었습니다.

https://username:[email protected]/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:[email protected]:443 

행운을 포트를 추가했습니다.

누군가이 오류를 해결하는 방법을 알려주십시오.

uri를 만드는 동안 탈출하지 말고 옵션을 벗어나지 마십시오. 여전히 작동하지 않습니다.

var ri = new Uri("https://username:[email protected]/api/?hostname=techno.ns360.info&myip=127.0.0.1",true); 

편집 : 사용자 이름이 문제를 일으키는 것처럼 같습니다. 내 사용자 이름은 내 이메일 주소입니다. 그리고 내 이메일 주소는 * .com로 끝납니다. 그래서 uri가 내 암호를 분석하려고합니다.

아직이 문제를 해결할 해결책이 없습니다. dnsdyanmic.org는 이메일 주소를 사용자 이름으로 사용하므로 사용자 이름을 변경할 수 없습니다.

+0

난 그냥 새 Visual Studio 프로젝트에 코드를 복사하여 그대로 작동합니다. – dtb

+0

나를 위해 작동합니다 (3.5 및 4.5 모두). .NET의 어떤 버전을 사용하고 있습니까? –

+0

내게 이것을 가르쳐 주셔서 감사합니다. 문제는 * .com이있는 사용자 이름 인 것 같습니다. 내 사용자 이름은 내 이메일 주소입니다. 동일한 코드를 사용자 이름 대신 전자 메일 주소로 시도하십시오. – Esen

답변

7

reqeust를 만들기 위해 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; 
+0

완벽하게이 문제를 해결했습니다. 고맙습니다. – Esen

관련 문제