Last Monday I gave a presentation at the ASP.NET Connections event in Orlando, the title was IIS 7.0 for ASP.NET Developers. I just wish I had more time to stay at Orlando, weather was great, especially considering that Sunday I was watching Snow in Redmond and then Monday and Tuesday I was around 80 degrees in sunny Orlando.
Anyway, thanks for all the people who attended the session, you can download the
Here are some of the things that I demonstrated:
- First Demo: ApplicationHost.config, Web.config and Tools.
- Showed the Application Pools list and how Visual Studio 2008 now provides IntelliSense for all the configuration of IIS.
- Added a new Application Pool using Notepad, and IIS Manager shows it.
- Showed the Sites section and created a new /Temp Application to my c:\temp directory.
- Browsed to the application and showed the new detailed error messages that IIS7.0 includes giving you all the details on what the problem is, and suggestions on how to fix it.
- Created a new Web.config where I enabled system.webServer/directoryBrowse and showed how this immediately applied the changes.
- Second Demo: Pipeline Mode and Application Migration
- Showed the Application Pools created by IIS, explained some of the differences in Classic Mode versus Integrated Mode.
- Showed how to create a new Application Pool and where to specifythe pipeline modes.
- Downloaded BlogEngine.net and created an application for it running in Integrated Mode. Showed the detailed errors when IIS detects compatibility issues with the pipeline mode and settings like <httpModules/httpHandlers>.
- Showed how assigning it to a Classic Mode immediately makes it run in the same way as before.
- Then moved it back to Integrated Mode, and showed how to use AppCmd to migrate config (appcmd migrate config "path"), and showed the changes between the original web.config and the updated one.
- Explained these differences and how this is the right way to create applications that will run in IIS6, IIS7 classic mode and IIS7 integrated mode
- Third Demo: Leveraging the Integrated Pipeline
- Showed a typical application that was configured using Forms Authentication and ASP.NET Membership and how accessing other content than ASP.NET (i.e. text files, images, classic ASP etc) would not cause authentication to happen.
- Showed how easy just by changing the FormsAuthentication module and the UrlAuthorization module you were able to easily now authenticate all the requests, including Classic ASP, PHP, static files, etc.
- Fourth Demo: Output Caching
- Showed a little performance script using WCAT running against the BlogEngine.net in my laptop (running Windows Vista) gave around 400 requests per second, and made W3WP.exe take about a 100% of CPU, meaning it couldn’t do anything more.
- Enabled Output Caching using IIS Manager for .aspx pages.
- Ran the Stress Test again, and this occasion the results were that we got around 1000 requests per second, but more importantly CPU consumed by W3WP.exe was only around 20%. The Stress client was the one taking all the CPU, meaning that the server could easily do more than twice as many request per second if the stress client was done by another machine.
- Fifth demo: Extensibility
- Showed how easy it is to extend IIS using Managed code, building a Handler that would translate PNG images to Jpeg images as well as embed a copyright information all dynamically at runtime.
- Showed another simple example on how to extend using a Module that logged every request to a SQL Server database.
Then I ran out of time 🙂