2017-03-22 9 views
4

Web API 웹 서비스를 호출하는 ASP.NET MVC 웹 사이트가 있습니다.Fiddler가 C# HttpClient()에서 API 호출을 보지 못했습니다.

통화가 작동하고 내 로컬 컴퓨터의 웹 서비스와 웹 서버에서 모두 200 OK를 반환합니다.

피들러가 실행 중이지만 이러한 호출이 표시되지 않습니다. MVC 웹 사이트 (웹 서비스를 차례로 호출) 만 호출합니다.

실제 웹 서비스 호출을 어떻게 볼 수 있습니까?

정상적으로 작동합니까? 특히 웹 기반 웹 서비스.

http://localhost을 참조하는 것을 중지했으며 대신 MACHINENAME을 사용하고 있습니다. - 일부 SO 게시물에서 권장하는 내용입니다. 그러나 이것은 도움이되지 않습니다.

나는 HttpClient를 그것을 전화를 사용하고 있습니다 :

using (var client = new HttpClient()) 
{ 
    var byteArray = Encoding.ASCII.GetBytes(username + ":" + password); 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); 

    client.BaseAddress = new Uri("http://MACHINENAME"); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    var response = await client.PutAsJsonAsync("api/path", custImp); 
} 

어떻게 피들러에서 웹 서비스 호출을 볼 수 있습니까?

+0

브라우저, 같은 컴퓨터에있는 MVC 웹 사이트와 WebAPI 모든 있습니까? – NineBerry

+0

예 - 온라인 상태의 웹 서비스에 대해서도 테스트합니다. – niico

답변

4

피들러를 시작하면 현재 사용자의 기본 시스템 프록시가 변경되므로이 사용자가 만든 웹 요청이 피들러에 의해 캡처됩니다.

그러나 웹 사이트는 IIS 내부에서 실행되며 다른 사용자로 실행됩니다.

<system.net> 
    <defaultProxy> 
    <proxy proxyaddress="http://127.0.0.1:8888" />  
    </defaultProxy> 
</system.net> 

참고 :

당신은 당신의 웹 사이트 (당신 피들러가 사용하는 포트를 사용)를 명시 적으로이처럼 MVC 응용 프로그램의 web.config 파일에서 웹 프록시로 피들러를 지정하여 피들러를 사용하도록해야
+0

OK 여기에서 권장하는대로 기기 구성을 변경하는 것이 좋습니다 (작동시킬 수있는 유일한 방법 임). http://www.telerik.com/blogs/capturing-traffic-from-.net-services-with -fiddler – niico

+0

일반적으로 Windows 서비스에서 실행되는 코드에서 웹 액세스 디버깅을 위해 machine.config 만 변경하면됩니다. IIS의 웹 응용 프로그램의 경우 web.config 파일을 조작하는 것으로 충분합니다. 테스트를 거쳐 내 대답에 표시된 코드가 IIS에서 작동하는지 확인했습니다. 다시 시도하고 표시된 코드와 정확히 일치하는지 확인하십시오. – NineBerry

+0

기계 구성을 수정할 때만 코드를 작동시킬 수 있습니다. 피들러가 MVC 애플리케이션이 MVC 테스팅 앱을 호출하는 것보다는 MVC 애플리케이션이 웹 API 서비스에 제공하는 API 호출을 확인하고 있습니까? – niico