Windows SharePoint Services + ASP.NET 2.0

I spent the better part of a day getting this to work. It only took a few minutes to convert an existing site, but takes much longer to create one from scratch - in parallel with your .NET 1.1 based site. Why? Simple. I didn't know ASP.NET 2.0 and IIS6 as well as I thought - but wait, you want to know how I set this up right? Here we go, the abbreviated instructions:

  1. Ensure that you have .NET Framework 2.0 installed on your server (duh)
  2. Install WSS SP2 (duh)
  3. Create an appPool for your 2.0 site, set the identity to whatever you want
  4. Using the identity from step 3, give it permissions to the folder that you intend to be your sites home directory
  5. Create a virtual root in IIS pointing to your folder you created in step 4, and using the appPool you created in step 3.
  6. Go to SharePoint Central Admin and extend your virtual root.
  7. Go back to IIS and convert the site to ASP.NET 2.0 by changing the version listed on the ASP.NET tab of the virtual roots properties.
  8. Now, Microsoft says to use stsadm with a -forceupgrade option. Forget that - it doesn't work. Instead you are going to have to manually add the lines shown in their instructions.
  9. Delete the aspnet_client directory as this is used only by ASP.NET 1.1 - and 2.0 doesn't need it (and has no equivalent).
  10. If you're site doesn't work yet... you may have had my problem. The "application's" under your virtual root (_vti_*) may be using your old ASP.NET 1.1 appPool - which obviously won't work. I'm guessing that IIS6 doesn't have application folder's inherit the appPool from the virtual root - instead forcing you to reset them! To fix this, right click properties on each folder with a gear on it in IIS - you'll then need to click remove and again to create the application for each folder in your virtual root.
  11. If your site still doesn't work (having already verified that all of your site is using the .NET 2.0 appPool) - then most likely you have a permissions problem. Make sure that the appPool's identity (which you provided in step 3) has EXECUTE rights on the physical folder's of your virtual root.
  12. If all goes well, you now have a function WSS 2.0 site running ASP.NET 2.0.

Now you should have an ASP.NET 2.0 based WSS2 site that's running in parallel with your existing ASP.NET 1.1 based WSS2 site's! Congratulations.

So what did I learn?

  • Each virtual root has a new tab that allows you to switch (on the fly) the version of ASP.NET that it is using. However, you can not have two different sites using a different version of .NET because the appPool's worker process has to run one or the other. Even though each site ends up spinning up a thread, they are still running with the context of the appPool's worker process. This means that the first site to spin up a thread in the worker process defines the appPool's .NET association
  • In order to run two WSS site's in parallel: 1 with 1.1 and 1 with 2.0, you have to assign a separate appPool (see previous bullet) so that the worker process can be specific to a particular version of .NET
  • Each appPool has it's own identity
  • EVERY application folder in a virtual root has it's own association to an individual appPool (ie, you have to SET EACH ONE INDEPENDANTLY)
  • WSS2 will not run at all until you modify the web.config to be "ready" for it, and Microsoft's instructions are wrong.

Of couse, with WSS2 up and running with ASP.NET 2.0 you can begin installing Son of SmartPart. Good luck!

«March»
SunMonTueWedThuFriSat
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678