Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.net C# requires IIS restart when new DLL copied to BIN directory

We are receiving a problem whereby every time we copy a dll to the bin directory, our main domain on the website grinds to a halt and the only way to bring it back up is by restarting the "WWW Publishing Service".

We run a website which contains a number of IIS applications running off a single server where each of these applications are configured to run off different application pools.

We have a large codebase which contains over 280 aspx pages across the site. Our main domain contains about 100 aspx pages whilst the subdomains contain 15 or 20 each.

When we do a build we are currently generating a bunch of dlls which we manually copy into the production servers bin directory. As soon as we do this the IIS obviously kicks off a recycle compiling each of the aspx pages and code behinds. At this point, the site essentially grinds to a halt (sometimes it needs to be restarted - by restarting the web publishing service - to wake it up again).

The curious thing is, this only happens when we deploy to the main domain IIS application, i.e. the www. If we deploy a bin file to the sub domain in the same way, it almost instantly works.

Even if I do an iisreset.exe, this does not seem to resolve the problem.

Few Questions:

  1. Is there anyway of speeding up the current process so that we do not have to restart the server?
  2. Would there be any obvious code changes or updates which would be causing the need for a restart of the service (sometimes we run an iisreset but this doesnt seem to bring it back to life)?

Some specs:

  • Code is written in : C#
  • .net framework : 2.0
  • Server : Windows Web Server 2008
  • iis version : IIS7
  • Database : MSSQL 2008 Standard

Any assistance would be appreciated. Thanks in advance.

like image 281
StacMan Avatar asked Jun 01 '11 05:06

StacMan


People also ask

What is ASP.NET C?

ASP.NET is an open-source, server-side web-application framework designed for web development to produce dynamic web pages. It was developed by Microsoft to allow programmers to build dynamic web sites, applications and services. The name stands for Active Server Pages Network Enabled Technologies. ASP.NET (software)

What is ASP.NET C# used for?

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites. It allows you to use a full featured programming language such as C# or VB.NET to build web applications easily.

Does .NET support C?

No. The . NET Framework is a bunch of classes(libraries) abstracting some lower-level windows functionality. C and C++ are languages.

Is .NET built on C?

. NET was fully written in C and C++ because the base was in assembly language. Integration of assembly with C is much easier compared to newer languages.


1 Answers

When you put an app_offline.htm file in the wwwroot of your main domain the IIS site goes offline. This is default behavior of IIS as Scott Gu described. When you do this all dlls can be safely overwritten. And when you delete the app_offline.htm file your application will be start up the next time a request comes.

Read more about app_offline.htm here and here.

Basically, if you place a file with this name in the root of a web application directory, ASP.NET 2.0 will shut-down the application, unload the application domain from the server, and stop processing any new incoming requests for that application. ASP.NET will also then respond to all requests for dynamic pages in the application by sending back the content of the app_offline.htm file (for example: you might want to have a “site under construction” or “down for maintenance” message).

This provides a convenient way to take down your application while you are making big changes or copying in lots of new page functionality (and you want to avoid the annoying problem of people hitting and activating your site in the middle of a content update). It can also be a useful way to immediately unlock and unload a SQL Express or Access database whose .mdf or .mdb data files are residing in the /app_data directory.

Once you remove the app_offline.htm file, the next request into the application will cause ASP.NET to load the application and app-domain again, and life will continue along as normal.

like image 137
Wessel Kranenborg Avatar answered Sep 20 '22 18:09

Wessel Kranenborg