用DirectoryEntry创建应用程序池后,如何可以设置该任务的.net版本,还有托管管道模式啊??
我创建完的新的应用程序池后,默认.net为2.0,管道模式经典。。
怎么可以用代码修改啊?
------解决方案--------------------------------------------------------
代码修改多麻烦啊,建议直接在iis虚拟路径或网站属性中修改……
------解决方案--------------------------------------------------------
看错了。。是用DirectoryEntry创建
// .NET对应属性如下,其中de为虚拟目录对应的DirectoryEntry对象
de.Properties["UNCUserName"][0] = 账户字符串; // Web服务器桥接文件服务器的UNC账户
de.Properties["UNCPassword"][0] = 密码字符串; // Web服务器桥接文件服务器的UNC账户密码
//【ASP.NET】
ScriptMaps[0] =.asp,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
……
ScriptMaps[50] =.refresh,C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_is
api.dll,5,GET,HEAD,POST,DEBUG
tring HostName = "localhost";
string newSiteNum = "2";
string Path = String.F"localhost";ormat("IIS://{0}/w3svc/{1}/root",HostName,newSiteNum);
DirectoryEntry root = new DirectoryEntry(Path);
NewWebSiteInfoAll newweb = new NewWebSiteInfoAll();
ArrayList arl = new ArrayList();
arl.Add(@".rem,D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG");
arl.Add(@".asax,D:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
root.Properties["s criptMaps"].Value = arl.ToArray();
root.CommitChanges();
不懂是不是楼主要的
------解决方案--------------------------------------------------------
改.net 版本看看这个, IIS6下得,不清楚IIS7下是否工作:
IIS 6.0 DirectoryEntry ScriptMaps property and set .Net version
http://stackoverflow.com/questions/1299084/iis-6-0-directoryentry-scriptmaps-property-and-set-net-version
------解决方案--------------------------------------------------------
这个是修改IIS7的Managed Pipeline mode 的代码:
- C# code
static void Main(string[] args) { string propertyName = "ManagedPipelineMode"; int mode = -1; if (args.Length < 2 || string.Compare(args[0], "/?") == 0 || string.Compare(args[0].ToLower(), "/help") == 0) { ShowHelp(); return; } string appPoolName = args[0]; string pipeLineMode = args[1].ToLower(); switch (pipeLineMode) { case "classic": mode = 1; break; case "integrated": mode = 0; break; default: mode = -1; break; } if (mode == -1) { ShowHelp(); return; } DirectoryEntry poolRoot = new DirectoryEntry("IIS://localhost/W3SVC/AppPools"); try { DirectoryEntry pool = poolRoot.Children.Find(appPoolName, "IIsApplicationPool"); pool.InvokeSet(propertyName, mode); pool.CommitChanges(); } catch (DirectoryNotFoundException ex) { Console.WriteLine("Application pool name was not found."); Console.WriteLine(ex.Message); } catch (COMException ex) { Console.WriteLine("Error in changing property \"" + propertyName + "\" of Application Pool \"" + appPoolName + "\""); Console.WriteLine(ex.Message); } catch (Exception ex) { Console.WriteLine("Unknown error."); Console.WriteLine(ex.Message); } } private static void ShowHelp() { Console.WriteLine("Application pool ManagedPipelineMode property changer."); Console.WriteLine(); Console.WriteLine("Syntax: AppPoolChanger AppPoolName Integrated|Classic"); Console.WriteLine("AppPoolName - The application pool name needed to be altered (case sensitive)."); Console.WriteLine(); Console.WriteLine("Use example: AppPoolChanger DefaultAppPool Classic"); Console.WriteLine("The above example will change the Application pool Managed Pipeline Mode to classic"); Console.WriteLine(); Console.WriteLine(@"/? or /help\tDisplay this usage message"); }