2011-10-03 161 views
1

我正在进行Web服务安装。 我需要做的一件事是在默认网站下创建一个新的虚拟目录。 问题是我需要为该虚拟目录设置一个不同的应用程序池(请不要问为什么......这些是要求,我无能为力)。从代码创建IIS应用程序

在IIS6中,因为虚拟目录和应用程序没有区别,所以我没有问题。 在IIS7中,不能将应用程序池设置为虚拟目录,因此我需要创建一个新的“应用程序”并将应用程序池附加到该应用程序池。

我在C#中找不到任何合理的示例/教程。我需要一些帮助:-)

谢谢。

回答

1

找到答案的地方在那里。 我使用相同的代码创建在IIS6虚拟目录和IIS7应用:

DirectoryEntry defaultWebSite = GetWebSiteEntry(DEFAULT_WEB_SITE_NAME); 
    DirectoryEntry defaultWebSiteRoot = new DirectoryEntry(defaultWebSite.Path + "/Root"); 

    //Create and setup new virtual directory 
    DirectoryEntry virtualDirectory = defaultWebSiteRoot.Children.Add(applicationName, "IIsWebVirtualDir"); 

    virtualDirectory.Properties["Path"][0] = physicalPath; 
    virtualDirectory.Properties["AppFriendlyName"][0] = applicationName; 
    virtualDirectory.CommitChanges(); 

    // IIS6 - it will create a virtual directory 
    // IIS7 - it will create an application 
    virtualDirectory.Invoke("AppCreate", 1); 

    object[] param = { 0, applicationPoolName, true }; 
    virtualDirectory.Invoke("AppCreate3", param); 
+0

我无法找到'GetWebSiteEntry'。我在我的类库中引用了System.Web,但找不到该方法的任何标志。你能指出我的某些“使用”或我可能需要的参考吗? – Cylindric

0

在C#中,您可以尝试运行一些创建虚拟目录的服务器端脚本。

采取类似的脚本: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5adfcce1-030d-45b8-997c-bdbfa08ea459.mspx?mfr=true

并与 '执行' 命令来运行它: http://www.codeproject.com/KB/cs/Execute_Command_in_CSharp.aspx

+0

曼塔斯:感谢对答复,我已经熟悉了这些脚本(IIS7的有APPCMD),但我需要编写ac#代码,另外,使用这些脚本的事件我仍然不知道如何创建应用程序(虚拟目录正常)。 –

相关问题