This project is read-only.
Project Description
AzureFiddlerCore allows an instance of Fiddler to be hosted in an Azure application. It will export any requests sent through its special proxies to a SAZ file stored in Azure Blob storage, for you to download.

It is written in C# using FiddlerCore.

Main blog post for this is here http://blog.bareweb.eu/2011/01/running-fiddler-in-windows-azure-with-azurefiddlercore/

Summary

There are a few examples on blogs about how to debug errors within an Azure application that are related to a call made over HTTP. In these examples, people mention using Fiddler, but only in the instance where you are debugging locally, against development storage for example. Should you need to debug a call your production application is making, you will find these solutions inappropriate. You may consider using Remote Desktop to install Fiddler on the remote machine, but this faces the following issues:
  • Accessing a production server securely
  • Risk of accidental damage to production server
  • Difficultly installing onto Azure platform - have to add trusted sites, download, install, remember to uninstall after for safety etc.

Usage

Startup

To use AzureFiddlerCore, you must startup the FiddlerCore proxy within your application. Care must be taken to ensure the role is ready (especially for a WebRole) and the initialization should be done in the AppDomain of the executing role - this rules out Global.asax and WebRole.cs. The next release of this software will aim to make the Startup a more streamlined system.

CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("AzureFiddlerCore.ConnectionString");

AzureFiddlerCoreLib.AzureFiddlerCore.Connect(storageAccount);
System.Diagnostics.Trace.TraceInformation("Connected OK");

Wireup

When you come to make a request that you wish to log, you should use the a proxy from the AzureFiddlerCore class:

using (var wc = new WebClient())
{
wc.Headers.Add(HttpRequestHeader.UserAgent, "AzureFiddlerCore.Demo");
var _proxy = AzureFiddlerCoreLib.AzureFiddlerCore.GetProxy();

if (_proxy != null)
{
wc.Proxy = _proxy;
}

string result = wc.DownloadString("http://search.twitter.com/search.json?q=Windows+Azure");
Response.Write(result);
}

Include only certain URL hosts

CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("AzureFiddlerCore.ConnectionString");
var filterList = new List<string>();
filterList.Add("search.twitter.com");

AzureFiddlerCoreLib.AzureFiddlerCore.Connect(storageAccount, filterList);

Last edited Jan 15, 2011 at 10:32 PM by andyatbareweb, version 15