Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Fiddler to debug the Windows Phone 7 emulator

I recently started using the updated beta tools for Windows Phone 7 and ran into an interesting problem. It seems that with Fiddler running, any Http requests run through the emulator start returning a null result and create a "not found" web exception. This is easy to reproduce with WebClient.DownloadStringAsync(). The old versions of the emulator did work with Fiddler if I remember correctly. Has anyone had luck getting the two to work together? If it's not possible I'd be open to any other tool that could help debug web requests from the WP7 emulator.

like image 223
James Cadd Avatar asked Jul 22 '10 00:07

James Cadd


2 Answers

It looks like there is a blog post that describes getting fiddler working with Win Phone 7 through some customized rules for setting up Fiddler as a Reverse Proxy.

Here is a little bit of the instructions from the fiddler website, but the blog post seems a little clearer (sorry for wacky format, the block quote is not cooperating):

Option #1: Configure Fiddler as a Reverse-Proxy Fiddler can be configured so that any traffic sent to http://127.0.0.1:8888 is automatically sent to a different port on the same machine. To set this configuration:

Start REGEDIT Create a new DWORD named ReverseProxyForPort inside HKCU\SOFTWARE\Microsoft\Fiddler

Set the DWORD to the local port you'd like to re-route inbound traffic to (generally port 80 for a standard HTTP server) Restart Fiddler Navigate your browser to http://127.0.0.1:8888

Option #2: Write a FiddlerScript rule Alternatively, you can write a rule that does the same thing.

Say you're running a website on port 80 of a machine named WEBSERVER. You're connecting to the website using Internet Explorer Mobile Edition on a Windows SmartPhone device for which you cannot configure the web proxy. You want to capture the traffic from the phone and the server's response.

Start Fiddler on the WEBSERVER machine, running on the default port of 8888. Click Tools | Fiddler Options, and ensure the "Allow remote clients to connect" checkbox is checked. Restart if needed. Choose Rules | Customize Rules. Inside the OnBeforeRequest handler, add a new line of code: if (oSession.host.toLowerCase() == "webserver:8888") oSession.host = "webserver:80"; On the SmartPhone, navigate to http://webserver:8888 Requests from the SmartPhone will appear in Fiddler. The requests are forwarded from port 8888 to port 80 where the webserver is running. The responses are sent back through Fiddler to the SmartPhone, which has no idea that the content originally came from port 80.

like image 73
Jacob Avatar answered Oct 05 '22 23:10

Jacob


I'm not able to get Fiddler to monitor the traffic, so I use WireShark, which works fine.

like image 39
David Veksler Avatar answered Oct 06 '22 01:10

David Veksler