2

Ever since we've installed .NET 4.0 and ASP.NET MVC 3 on our IIS servers and we deploy our websites we get an "Server Application Unavailable".

There are no logs in the eventlog regarding the problem.

We think it is related to the installation of .NET 4.0 or MVC 3.0 as we've seen this happen through each stage of our deployment. We first upgraded our DEVelopment environment, then our ACCeptation and now finally we are seeing the same behaviour in our PRoDuction environment.

Recycling the application pool of the specific web application solves the problem.

We did not have this before, and are wondering what the installation of MVC 3.0 or .NET 4.0 could have changed. All our webservers run on IIS6.

Update 12-08-2011
We've noticed something else: When we have one application pool running three .NET 4 applications. And we change a value in the web.config of one of those applications, which should cause it to recycle, only this application no longer works, the other two are still running fine. Meaning that an automatic recycle never happens when a file changes inside the web application.

Peter
  • 161
  • 2
  • 10
  • 1
    What good is a development and acceptation environment if you push broken things through the line anyway? – Wesley Aug 11 '11 at 23:30
  • Well it's not broken, once we've deployed the website and recycled the application pool everything works fine. – Peter Aug 12 '11 at 06:21

2 Answers2

2

Is there more than one application in your troublesome App Pool? If so, try separating into different pools as this could be causing the problem - especially if the two applications use different versions of .Net.

PCurd
  • 192
  • 10
  • In IIS6 you can't have applications running on different versions of .net in the same application pool. That just doesn't work at all. [see http://forums.iis.net/t/1179042.aspx](http://forums.iis.net/t/1179042.aspx). And we've tried separating them, each in it's own application pool. But the problem remains. I've updated my question with some more information. – Peter Aug 12 '11 at 06:27
  • This is no longer true. As of .NET 4, application pools targeting 4.0 can also run earlier versions [side-by-side](http://msdn.microsoft.com/en-us/library/ee518876.aspx). Edit: Well, I guess this can still be the case if there is a defect when running this way... – Sumo Aug 15 '11 at 02:27
1

We have discovered the problem, it was something that an outside person could never have known...

Because we want to share a session between two applications, we have added a 'SharedSessionModule' to the webapp. What this basically does is change the name of the application before fetching the correct session from the ASPState database. I got this module from here: http://www.codeproject.com/KB/session/sharedsession.aspx?display=Print

This works but messes up the internals of IIS causing it to crash when recycling the appPool.

Peter
  • 161
  • 2
  • 10
  • Sorry I'm not doing this right. I don't have a reputation of 50 and have no other way to ask this question. Peter, we are doing this exact thing using the same code from the link you posted. I know this was a couple of years ago but do you remember how you determined that IIS gets hosed and perhaps why it crashes? Is there any other solution to sharing sessions? – sthames42 Sep 05 '13 at 22:56
  • @sthames42 After removing this module it worked fine. The solution we went for to share a session was done way more easily on the database level. ASP.Net sets up some tables which contains the application name. When it wants to get the session it calls a stored procedure and passes this name. You just have to modify this procedure (I think it was more then one) so that it gets the same session for another (in another table defined linked domain) name. I did write documentation but it is propriety of the company I did the consulting job for at the time and I no longer work there. – Peter Sep 10 '13 at 10:45