2013-06-13 2 views
2

WebClient를 사용하는 샘플 콘솔 앱에서 ASP.NET webapi 서비스에 연결하는 데 문제가 있습니다.WebApi의 NetworkCredentials 및 Authorization

public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) 
{ 
    if (actionContext.Request.Headers.Authorization == null) 
    { 
     var response = new HttpResponseMessage(HttpStatusCode.Unauthorized); 
     response.Headers.Add("WWW-Authenticate", "Basic realm=\"localhost\""); 
     actionContext.Response = response; 
     return; 
    } 
} 

클라이언트 코드가 보통이다 : 컨트롤러가 사용자 정의 인증합니다 속성들로 장식되어

public HttpResponseMessage Get() 
{ 
    return Request.CreateResponse(HttpStatusCode.OK, new string[] { "value1", "value2" }); 
} 

다음 webapi는 MVC4에서 전형적인 샘플 사이트입니다

var wb = WebRequest.Create("http://localhost:64921/Values"); 
wb.Credentials = new NetworkCredential("xxx", "xxx"); 

var aaa = wb.GetResponse(); 
Console.WriteLine(aaa); 
Console.ReadLine(); 

자, 나는 WebClient 또는 WebRequest이 자격 증명을 보내기 전에 401을 기다리는 것으로 알고 있으며 그것이 바로 내가 여기서하려고하는 것입니다.

위의 설정으로 말할 것도없이 아무 것도 작동하지 않습니다. 나는 IIS 명시 적 설정으로 간 다음과 같은 변경 :

<basicAuthentication enabled="true" /> (in the security section) 
<add name="BasicAuthenticationModule" lockItem="false" /> (in the modules section) 

401 서버 코드가 actualy 명중도 전에 반환됩니다 있다는 것입니다 내가 데 문제. 컨트롤러 나 애트리뷰트에 브레이크 포인트를 꽂으면 히트되지 않습니다. 오류에 대한 자세한 내용은 오류 401.2에 대한 일반적인 긴 텍스트입니다. IIS configs와 관련이 있지만, IIS를 사용하면 멋진 IIS가 아니라이를 해결할 좋은 GUI가 없습니다. 누구든지 도와 줄 수 있습니까?

고맙습니다.

답변