如果机子上装有两个版本以.NetFrameWork,在创建时将使用IIS中默认使用的版本,而默认的版本又不是你需要的,那怎么办?在部署后手动修改?还是在部署时直接使用程序修改呢?
一个用于修改虚拟目录的ASP.NET版本方法
ASP.NET IIS注册工具
使用ASP.NETIIS注册工具(Aspnet_regiis.exe)可以方便地更新ASP.NET应用程序的脚本映射,使其指向与该工具关联的ASP.NET版本.
关于ASP.NETIIS注册工具的更详细的内容,请参考MSDN.
在控制台上我们使用下面的命令可以修改一个虚拟目录的Asp.Net版本:
Aspnet_iis.exe–spath
我们知道了如何来修改一个虚拟目录的版本,现在的问题就是如何使用程序来实现它了.
以下代码基于.NetFrameWork2.0在WindowsXpsp2中编译通过:
- //创建一个虚拟目录
- DirectoryEntrydirRoot=newDirectoryEntry("IIS://localhost/W3SVC/1/Root");
- DirectoryEntriesdirs=dirRoot.Children;
- DirectoryEntryvirtualDir=dirs.Add("VirtualChange",dirRoot.SchemaClassName);
- object[]objs=newobject[]{true};
- virtualDir.Invoke("AppCreate",objs);
- virtualDir.Properties["AppFriendlyName"][0]="VirtualChange";
- virtualDir.Properties["Path"].Value="C:\\VirtualChange";
- virtualDir.CommitChanges();
- //启动aspnet_iis.exe程序
- stringfileName=Environment.GetEnvironmentVariable("windir")+@"\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe";
- ProcessStartInfostartInfo=newProcessStartInfo(fileName);
- //处理目录路径
- stringpath=virtualDir.Path.ToUpper();
- intindex=path.IndexOf("W3SVC");
- pathpath=path.Remove(0,index);
- //启动aspnet_iis.exe程序,刷新教本映射
- startInfo.Arguments="-s"+path;
- startInfo.WindowStyle=ProcessWindowStyle.Hidden;
- startInfo.UseShellExecute=false;
- startInfo.CreateNoWindow=true;
- startInfo.RedirectStandardOutput=true;
- startInfo.RedirectStandardError=true;
- Processprocess=newProcess();
- process.StartInfo=startInfo;
- process.Start();
- process.WaitForExit();
- stringerrors=process.StandardError.ReadToEnd();
- if(errors!=string.Empty)
- thrownewException(errors);
- Console.WriteLine(process.StandardOutput.ReadToEnd());
修改IIS目录的ASP.NET版本成功