【问题标题】:Creating Virtual Directory programmatically with IIS8.0使用 IIS8.0 以编程方式创建虚拟目录
【发布时间】:2013-12-02 03:12:19
【问题描述】:

我正在尝试使用以下代码以编程方式创建虚拟目录:

ServerManager iisManager = new ServerManager();
iisManager.Sites.Add("NewSite", "http", "*:8080:", @"D:\mine\TestApps\TestAppXML");
iisManager.CommitChanges();

此代码在通过控制台应用程序使用时工作正常。 但是当我通过 Web 应用程序使用相同的代码时,它并没有完成预期的工作。它也没有给出任何错误。 任何人都知道为什么相同的代码不适用于 Web 应用程序?

【问题讨论】:

  • 我猜你的 Web 应用程序使用的用户无权访问这些东西。
  • 我以管理员身份运行 Web 应用程序。但是控制台应用程序甚至可以在没有管理员的情况下运行。
  • 让我们清楚我们正在谈论的用户。应用程序池的Identity 设置为哪个用户?
  • 我没有明确设置任何内容。我正在使用默认的应用程序池运行,并在打开 VS 时以管理员身份运行它。只需使用上述 3 行代码并添加对 Microsoft.Web.Administration dll 的引用。不更改任何其他属性。

标签: c# iis virtual-directory


【解决方案1】:

我没看到你是在获取网站 ID。

执行此操作的方法是操作 Site.Applications 集合,它是您网站中所有应用程序的扁平树。

如果你想创建一个虚拟目录试试这个:

//Get site information
Site site = srvam.Sites.First(s => s.Id == 3);
if (!SiteExists(srvman, siteId))
                    throw new ApplicationException();
Application iisManager = site.Applications.First(a => a.Path == "/");
iisManager.VirtualDirectories.Add("/vdir_1", @"D:\MySite\other_content");
srvam.CommitChanges();

如果您想创建一个虚拟应用程序,请使用以下代码:

//Get site information
    Site site = srvman.Sites.First(s => s.Id == 3);
if (!SiteExists(srvman, siteId))
                    throw new ApplicationException();
Application app = 
   site.Applications.Add("/app_2", @"d:\mysite\other_content");
app.ApplicationPoolName = "MySite";
srvman.CommitChanges();

有一篇很棒的文章here

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多