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