Wednesday, November 08, 2006

HOWTO - Update Applications under Debug on IIS 6

Question:

Hi,

we are using a IIS 6.0 server as remote webserver for developing vstudio .NET applications. When debugging we always have to restart IIS (or recycle application pool), in order to overwrite the new compiled DLLs.

The DLL is locked by the w3wp.dll process and the dll therefore cannot be overwritten.

Is there any way to tell IIS (w3wp.dll) not the cache the dll or better free the dll directly after execution?

Answer:

Standard debugging procedures differ depending on the type of application.

ISAPI Extension DLL

You can uncheck the "Cache application files" option under the "App Mappings" tab of the application to force IIS to load/unload the ISAPI Extension DLL for every single request to that resource extension's handler. Be warned that this option is debug-only (do NOT uncheck this on production servers) and often exposes startup/shutdown bugs in your ISAPI Extension DLL.

ISAPI Filter DLL

You should simply recycle the Application Pool(s) which have loaded the Filter DLL. If it is a Global Filter, then you must recycle all Application Pools. If it is a Site Filter, then you must recycle all Application Pools used by applications of the Website which loads that Site Filter.

ASP.Net httpModule and httpHandler

You can dynamically change either the DLL in /bin or source code in global.asax or /App_Code, depending on how you configured the httpModule or httpHandler. No restart/recycle required.

//David

4 comments:

Anonymous said...

You can also debug filters using the ISAPI Filter debugging host at http://www.eggcentric.com

David Wang said...

Thanks for the tip.

However, can you clarify why one would want to debug ISAPI Filter using a debugging host? What do I get from such a host? How am I sure that I'm debugging a real issue vs a simulated issue from the debugging host?

Because using freely available and downloadable tools from microsoft.com, I can do just about everything I need to debug ISAPI Filters, given a test IIS server.

//David

Anonymous said...

ISAPI Debugging host from www.eggcentric.com is an excelent option. I'm using it for years debugging IIS 6 without having to restart the server.
It's very easy:
- Configure the web site to load the eggcentric isapi filter
- From the RAD IDE (VS, Delphi) open the provided application using the .dll as parameter.

Thanks it! Everytime Internet Explorer retrives information from the website, the filter passes the request to the application, and then to the RAD debugger. Very easy and effective. It's worth the price.

Anonymous said...

vuitton replica
which are with handles should not be afraid on a angle of the wardrobe, autumn the louis replica
for a absolute continued time would be bigger off in a bolt louis vuitton replica
rather than a box.