【问题标题】:Create IIS Application from Code从代码创建 IIS 应用程序
【发布时间】:2011-10-03 08:10:40
【问题描述】:

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

在 IIS6 中,由于虚拟目录和应用程序之间没有区别,所以这样做没有问题。 在 IIS7 中,无法将应用程序池设置为虚拟目录,因此我需要创建一个新的“应用程序”并将应用程序池附加到它。

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

谢谢。

【问题讨论】:

    标签: c# iis


    【解决方案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);
    

    【讨论】:

    • 我找不到GetWebSiteEntry。我在我的类库中引用了 System.Web,但找不到该方法的任何迹象。你能指出我可能需要的一些“使用”或参考吗?
    【解决方案2】:

    使用 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

    【讨论】:

    • Mantas: 谢谢你的回复,我已经熟悉这些脚本了(IIS7有appcmd)但是我需要写一个c#代码,此外,使用这些脚本的事件我还是不知道如何创建应用程序(虚拟目录即可)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多