Remotely debug your Azure Websites with Visual Studio 2013

Today the new version of Visual Studio (version 2013) will be officially launched. With this new version it becomes very easy to remotely debug your Windows Azure Websites.

In order to remotely debug your site you will need to download and install the following:

  • Visual Studio 2013 (I used the release candidate of the Premium edition).
  • And the Azure SDK 2.2


Here is how you do it
First you need to deploy your site in debug build configuration, otherwise you’re breakpoints won’t be hit.

Next you need to add your Azure subscription to Visual Studio so you can manage your subscription from within Visual Studio 2013.

To add you need to right click on “Windows Azure” in the Server Explorer (Ctrl+W,L) and select “Import Subscriptions…”

Select Import Subcriptions... to start adding your Azure subscription to Visual Studio 2013

Import Subscriptions…

A popup will appear.

Download and Import your subscription into VS2013

Download and Import your subscription into VS2013

If you haven’t downloaded your subscription file before, you can download it via the “Download subscription file” (1).

After downloading you can select that file via Browse (2), and click on Import (3).

When the import was successful, you can manage all your Azure services from within Visual Studio.

Now you can see your Web Sites under the Windows Azure node in Server Explorer. Right click on the site that you would like to debug and select Attach Debugger. When this is invoked the remote debugging agent will be started on your web site.

Attach the remote debugger to your Azure Website in Visual Studio 2013

Attach the remote debugger to your Azure Website in Visual Studio 2013

When the debugger is attached ALL the breakpoints from every request to the site will be hit. So don’t use this on a site with a lot of users :-)

To filter the requests from only your IP address you can add a filter to your breakpoint by right clicking on your breakpoint and select “Condition…”.

Add breakpoint filter

Add breakpoint filter

The following popup will appear.

Filter on IP Address

Filter on IP Address

As you can see in my code above, I assigned the Request.UserHostAddressip to a local variable ip.
string ip = Request.UserHostAddress;
So now I can add the condition to check if ip is my IP address. The breakpoint will only be hit if this condition is true.

It would be a lot easier to set the condition to: Request.UserHostAddress == "", but that didn’t work… Probably because the debugger doesn’t have the Request object in scope. Do you have a better idea?