2010-07-22 5 views
4

외부 사이트에 대한 URL과 사용자 이름 및 암호가 있습니다. 브라우저를 통해 URL에 액세스하면 인증 상자가 나타납니다. 나는 그것에게 사용자 이름과 암호를주고, 나는 페이지에 도착할 수있다.올바른 자격 증명을 사용하여 HttpWebRequest를 만들 때 401 Unauthorized를받는 이유는 무엇입니까?

은 내가 HttpWebRequest를 개체를 사용하여 코드를 통해 같은 일을 달성하기 위해 노력하고 있어요 :

var webRequest = (HttpWebRequest)WebRequest.Create(url); 

webRequest.GetResponse() 등 ... 웹 사이트 소유자가 사이트에 몇 가지 보호 기능을 추가하기 전에 작업하는 데 사용

이, 사용자 이름과 암호를 알려주었습니다.

webRequest.Credentials = new NetworkCredential("username", "password") 

나는 또한 시도 :

"원격 서버 :

webRequest.Credentials = new NetworkCredential("username", "password", “url domain”) 

이 항상 오류가 발생 다음과 같이 WebRequest 클래스는 내가 설정 한 자격 증명 속성이 있습니다 오류 (401)가 인증되지 않았습니다. "

나는 분명한 뭔가를 놓치고 있습니까?

+0

문제가 무엇인지 전혀 알지 못하며 어떤 해결책을 받아 들일지 알지 못합니다.외부 호스트가 결국 무언가를 바 꾸었습니다. 결국 내 목표와 완전히 다른 것을해야했습니다. 나는 이것을 삭제하고 싶다. – zod

+0

URL이 http://domain.com으로 가고 서버가 http://domain.com/sites/home.aspx와 같은 페이지로 리디렉션되어 자격 증명을 통과하지 못했을 것입니다. –

답변

0

피들러 (www.fiddler2.com)로 요청을 디버깅 해보십시오.

따라서 당신은 피들러를 시작하고 귀하의 요청에 프록시 설정을 추가해야합니다

webRequest.Proxy = New WebProxy("http://127.0.0.1:8888") 
+1

Fiddler를 사용하는 것은 중요하지 않습니다. 네트워크 모니터 또는 Wireshark 훨씬 쉽습니다. –

0

당신은 HTTP를 사용하는 경우, 단순히로부터 반환 (401) 메시지의 종류를 캡처 Microsoft 네트워크 모니터 또는 와이어 샤크를 이용하시기 바랍니다 웹 서버. 사실 401.3 또는 다른 의미의 오류 코드 일 수 있습니다.

1

System.Net.NetworkCredential을 사용하면 리소스의 인증 모델에 따라 효과가 없을 수 있습니다. 원격 사이트에서 사용하는 모델을 이해하는 것이 도움이됩니다.

OpenID, 양식 인증 및 Windows 통합 인증은 모두 다르게 작동합니다. @Christoph 및 @Lex가 설명하는 도구를 사용하여 사용하는 인증 방법을 추론하거나 원격 웹 사이트 제공자에게 연락하면됩니다.

원격 사이트에서 Kerberos 또는 NTLM과 같은 협상 프로토콜을 사용하는 경우 실제로 발생하는 동작이 이상합니다. 그러나 다른 프로토콜을 사용하면 다른 방법으로 전환해야 할 수도 있습니다.

0

개인 정보 보호 관련 문제가없는 경우 액세스하려는 URL을 게시 할 수 있습니다.

URL이 잘못되었거나 잘못된 페이지 (또는 잘못된 페이지 + 매개 변수 조합)를 참조하는 경우 가끔 이런 서버 오류가 표시됩니다.

미시간주의 레거시 웹 응용 프로그램에서 작업했는데 잘못된 페이지 매개 변수가있는 페이지에 액세스하려고 할 때마다 400 개의 스타일 오류가 발생했습니다.

0

웹 서버에서 요청 필터링을 사용하고 있습니까? 거부되도록 설정되어있는 여러 동사를 확인할 수 있습니까?

관련 문제