Runtime Flow blog (Understanding a control flow in a running .NET application)

January 19, 2012

Monitoring a .NET application running in IIS

Filed under: Uncategorized — Sergey Vlasov @ 2:27 am

Runtime Flow can monitor a .NET application running in IIS, but currently it requires manual configuration and only one IIS worker process (w3wp.exe) can be monitored. Below are the steps I used to monitor a sample ASP.NET MVC2 application configured to use local IIS Web server, created in Visual Studio 2010 and running on Windows 7:

A sample MVC application in Visual Studio 2010 configured to use local IIS web server

A sample MVC application in Visual Studio 2010 configured to use local IIS web server

1. Enable profiling for w3wp.exe.

a) Find the application pool for the app.

Check IIS Manager, Sites – Default Web Site – MvcApplication1, Basic Settings. In my case the pool is DefaultAppPool:

Application pool in IIS manager

Application pool in IIS manager

b) Enable user profile loading for the pool.

IIS Manager, Application Pools, DefaultAppPool, Advanced Settings, Process Model – Load User Profile, set to True:

Application pools in IIS manager

Application pools in IIS manager


Advanced application pool settings

Advanced application pool settings

c) Find SID of the pool account.

From the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList key find ProfileImagePath with DefaultAppPool. In my case the SID is S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415:

DefaultAppPool SID in registry

DefaultAppPool SID in registry

d) Set environment variables to invoke Runtime Flow profiler.

Using the found SID, add two string values to HKEY_USERS\S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415\Environment:

Cor_Enable_Profiling=1
COR_PROFILER={C967CF3F-79BF-49a5-A10F-D5B269DB9E54}

Environment settings for DefaultAppPool

Environment settings for DefaultAppPool


Note that if you use IntelliTrace it can overwrite these registry values.

2. Close all running w3wp.exe processes.

In IIS Manager restart server.

3. Run monitoring.

In Runtime Flow – Customized Run, uncheck Stop monitoring when the command completes. Set Command to “C:\Program Files\Internet Explorer\iexplore.exe”. Set Command arguments to “http://localhost/MvcApplication1”. Optionally set Options – Monitoring Filter to “Module == MvcApplication1.dll”:

Customized run of Internet Explorer

Customized run of Internet Explorer


After you click Run, you will see how your application runs:
Runtime Flow monitoring results

Runtime Flow monitoring results

Update (July 28, 2018): For Windows 7 SP1 you may need to additionally edit the applicationHost.config file. See How to configure environment variables in an IIS 7 application? for details.

Advertisement

Blog at WordPress.com.

%d bloggers like this: