복잡한 형식을 받아들이고 일부 데이터를 반환하는 WCF 서비스가 있습니다. Fiddler를 사용하여 서비스에 대한 수신 요청이 어떻게 보이는지 확인하고 싶습니다. 클라이언트는 서비스 참조 프록시를 사용하는 .net 콘솔 앱입니다. Fiddler로 가능합니까? 저는이 도구를 처음 사용했으며 이전에는 요청 작성기를 사용하여 데이터를 게시하는 데만 사용했습니다.
복잡한 형식을 받아들이고 일부 데이터를 반환하는 WCF 서비스가 있습니다. Fiddler를 사용하여 서비스에 대한 수신 요청이 어떻게 보이는지 확인하고 싶습니다. 클라이언트는 서비스 참조 프록시를 사용하는 .net 콘솔 앱입니다. Fiddler로 가능합니까? 저는이 도구를 처음 사용했으며 이전에는 요청 작성기를 사용하여 데이터를 게시하는 데만 사용했습니다.
답변:
web.config에 이것을 추가해야합니다.
<system.net>
<defaultProxy>
<proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
그게 다입니다.하지만 피들러를 닫은 후 web.config 줄을 제거하는 것을 잊지 마십시오. 그렇지 않으면 오류가 발생하기 때문입니다.
참조 : http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy
http://
프록시 주소 를 지정하지 않은 것 입니다. 당신이 언급했듯이 나머지는 모두 동일했습니다.
http://localhost/abc.svc
했습니다http://HOSTNAME/abc.svc
Fiddler는 인바운드 요청이 아닌 아웃 바운드 요청을 수신하므로 Fiddler를 사용하여 서비스로 들어오는 모든 요청을 모니터링 할 수 없습니다.
Fiddler로 얻을 수있는 가장 좋은 점은 콘솔 앱에서 생성 된 모든 요청을 볼 수 있다는 것입니다 (앱이 다른 파이프 라인을 사용하는 대신 웹 요청을 생성한다고 가정).
들어오는 모든 요청을 모니터링 할 수있는 더 강력하지만 사용하기 어려운 도구를 원한다면 WireShark를 확인해야합니다.
편집하다
나는 바로 잡았다. Fiddler를 역방향 프록시 로 구성 하는 지침을 게시 한 Eric Law에게 감사드립니다 !
여러 사용 사례에 대한 주석 / 답변에 언급 된주의 사항을 통합합니다.
대부분 http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp을 참조 하십시오.
콘솔 앱에서는 다음을 지정할 필요가 없습니다 proxyaddress
.
<proxy bypassonlocal="False" usesystemdefault="True" />
웹 애플리케이션 / IIS에서 호스팅되는 항목에서 다음을 추가해야합니다 proxyaddress
.
<proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
HttpWebRequest
등을 통해 요청을 할 때 항상을 포함하는 URL에 대해 Fiddler 프록시를 우회 localhost
하므로 시스템 이름과 같은 별칭을 사용하거나 '호스트'파일에서 무언가를 구성해야합니다. 같은 localhost.fiddler
또는 http://HOSTNAME
작동)을 지정하는 proxyaddress
경우 Fiddler가 켜져 있지 않으면 구성에서 제거해야합니다. 그렇지 않으면 앱에서 수행하는 모든 요청에서 다음과 같은 예외가 발생합니다.
대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다. 127.0.0.1:8888
통신을 보내는 클라이언트를 제어 할 수있는 경우 이것은 간단합니다. 클라이언트 측 서비스 클래스에 HttpProxy를 설정하기 만하면됩니다.
예를 들어 스마트 폰에서 실행되는 웹 서비스 클라이언트를 추적하기 위해이 작업을 수행했습니다. 클라이언트 측 연결에서 네트워크상의 PC에서 실행중인 Fiddler의 IP / 포트에 프록시를 설정했습니다. 그런 다음 스마트 폰 앱은 Fiddler를 통해 모든 발신 통신을 웹 서비스로 보냈습니다.
이것은 완벽하게 작동했습니다.
클라이언트가 WCF 클라이언트 인 경우 프록시 설정 방법 은 이 Q & A 를 참조 하세요 .
클라이언트 측 앱의 코드를 수정할 수있는 권한이 없더라도 클라이언트가 사용하는 웹 서비스 스택에 따라 관리적으로 프록시를 설정할 수 있습니다.
표준 WCF 추적 / 진단
어떤 이유로 Fiddler를 작동시킬 수 없거나 요청을 다른 방식으로 기록하려는 경우 다른 옵션은 표준 WCF 추적 기능을 사용하는 것입니다. 그러면 멋진 뷰어가있는 파일이 생성됩니다.
문서
참조 https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-logging를
구성
구성에 다음을 추가하고, c:\logs
존재 하는지 확인하고 , 다시 빌드하고, 요청합니다.
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
방금 Brad Rem의 첫 번째 답변을 시도하고 BasicHttpBinding 아래의 web.config에서이 설정에 도달했습니다.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding bypassProxyOnLocal="False" useDefaultWebProxy="false" proxyAddress="http://127.0.0.1:8888" ...
...
</basicHttpBinding>
</bindings>
...
<system.serviceModel>
이것이 누군가를 돕기를 바랍니다.
HTTP 디버거의 무료 버전을 사용할 수 있습니다.
프록시가 아니므로 web.config를 변경할 필요가 없습니다.
또한 둘 다 표시 할 수 있습니다. 수신 및 발신 HTTP 요청. HTTP 디버거 무료