Using MVC with IIS 5.1

Posted by Grubersauce

If you're installing a website which uses Microsoft MVC for ASP.NET on a machine running IIS 5.1 (Windows XP), server requests without extensions explode.  The "fix" for this is setting a default (*) extension mapping to use ASP.NET.  We wrote a small .exe which we call from a custom action in InstallShield.

 
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.DirectoryServices;
using System.IO;
using System.Linq;
using System.Text;
 
namespace SetExtensionsForMVC
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                FileVersionInfo verinfo = null;
                if (File.Exists(@"C:\WINNT\system32\inetsrv\inetinfo.exe"))
                    verinfo = FileVersionInfo.GetVersionInfo(@"C:\WINNT\system32\inetsrv\inetinfo.exe");
                else if (File.Exists(@"C:\Windows\system32\inetsrv\inetinfo.exe"))
                    verinfo = FileVersionInfo.GetVersionInfo(@"C:\Windows\system32\inetsrv\inetinfo.exe");
 
                if (verinfo != null)
                {
                
                    Console.WriteLine("Major: " + verinfo.FileMajorPart);
                    Console.WriteLine("File version: " + verinfo.FileMinorPart);
 
                    if(verinfo.FileMajorPart == 5 && verinfo.FileMinorPart == 1 )
                    {
                        String ourApplication = args[0];
                        String strPath = "IIS://localhost/W3SVC/1/Root/" + ourApplication;
                        var iisEntry = new DirectoryEntry(strPath);
                        PropertyValueCollection applicationMappings = iisEntry.Properties["ScriptMaps"];
                        if (!applicationMappings.Contains(
                                 @"*,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1"))
                        {
                            Console.WriteLine("Writing extensionless mapping...");
                            applicationMappings.Add(@"*,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1");
                            iisEntry.CommitChanges();
                            Console.WriteLine("Complete!");
                        }
                        else
                        {
                            Console.WriteLine("Extensionless mapping already exists.");
                        }
                    }
                }
 
            }
            catch(Exception exception)
            {
                Console.WriteLine("An error occurred: " + exception.Message);
            }
        }
    }

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Posted on: 12/17/2009 at 7:09 AM
Tags: , , , , ,
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading