2010-05-27 2 views
18

우리는 HTTP GET 호출을하는 VS2005로 구축 된 오래된 (5 년 이상) Windows 서비스 응용 프로그램을 교체하는 중입니다. 웹 서버가 고객의 네트워크 상에 있고 직접 연결할 수없는 등 어려운 일이 몇 가지 있으며, 안타깝게도 실행중인 시스템을 중단하여 WinForm으로 대체하지 않기를 바랍니다 Fiddler에서 모니터링 할 수있는 버전입니다. 새로운 코드는 모든 것을 올바르게 수행하고있는 것처럼 보이지만, 아, 인증에 실패하고 있습니다.Windows 서비스에서 HTTP 호출을 가로 채기 위해 Fiddler를 구성하는 방법이 있습니까?

Windows 서비스에서 HTTP 호출을 가로 채기 위해 피들러 (2.2.9.1)를 구성 할 수 있습니까?

답변

34

Codeka는 나를 올바른 방향으로 인도하기위한 단서를 제공했습니다. 여전히 누락 된 부분은 프록시를 구성하는 방법이었습니다.

<system.net> 
     <defaultProxy enabled="true"> 
       <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/> 
     </defaultProxy> 
</system.net> 

이 Windows 서비스의 HTTP 트래픽이 피들러를 통해 흐르는 시작 수행 한 후 : 필요한 <appname>.exe.config 추가 된 다음과 같은 섹션이 있습니다.

+1

http://www.fiddler2.com/fiddler/help/hookup.asp#Q -DOTNET – EricLaw

+0

@ 에릭 - 링크를 게시 해 주셔서 감사합니다. 나는 실제로 Codeka의 단서를 따라 FAQ 항목을 보았습니다. Windows 서비스에 적용된 것이 당연한 것은 아닙니다. –

+0

FWIW는 "Windows 서비스"및 서비스가 .NET으로 작성된다는 사실과 아무 관련이 없습니다. :-) – EricLaw

5

Fiddler는 HTTP 프록시 역할 만하기 때문에 서비스에서 프록시를 구성 할 수 있으면 Fiddler를 통과하도록 구성 할 수 있습니다. 가능한지 여부는 말하기 어렵습니다 ...

두 번째 컴퓨터에서 Fiddler를 실행하고 포트 80에서 수신 대기하도록 구성하면됩니다. 그런 다음 "테스트"컴퓨터에서 다음을 편집하십시오. 호스트 파일이 대신 두 번째 컴퓨터를 가리 키도록하십시오. 따라서 웹 서비스가 www.example.com에 있다고 가정하면 테스트 서버를 설정하여 "www.example.com"이 두 번째 컴퓨터 (피들러 실행)를 가리 키도록하십시오. 그런 다음 서비스가 "www.example.com"에 연결되면 이 실제로 피들러에 연결됩니다. 그러면 Fiddler는 요청/응답을 기록한 후 www.example.com으로 연결을 전달합니다.

위 테스트를 수행하지는 않았지만 작동한다고 생각합니다. 분명히, 서비스에서 프록시 설정을 쉽게 구성 할 수 있다면!

3

물론 Fiddler가 작동하지 않으면 항상 Wireshark이 있습니다. 힌트로 Wireshark에서 몇 가지 필터를 사용하십시오 (예 : 대상 IP로 가고 오는 패킷 만 표시). 데이터가 넘치고있는 것처럼 느끼지 않도록하십시오.

2

.NET은 localhost 및 127.0.0.1의 프록시를 우회하기 때문에 테스트하려는 URL 대신 컴퓨터 이름을 하드 코드하면됩니다.

//myUrl = "http://127.0.0.1/myservice"; 
myUrl = "http://mymachine/myservice"; 
-1

참고 : 중요 : 다른 설정에 관계없이 .NET은 항상 localhost가 포함 된 URL에 대해 Fiddler 프록시를 무시합니다. 따라서 localhost를 사용하는 대신 컴퓨터 이름을 참조하도록 코드를 변경하십시오. 예를 들어 :

피들러에 표시되지 않습니다이 URL :

http://localhost/X509SignCodeService/X509SigningService.asmx 피들러에 나타납니다이 URL :