首页 > 解决方案 > 如何使用 c# 在 IIS 中获取站点的物理路径?

问题描述

当用户卸载应用程序时,我需要删除站点。我不知道站点名称,但物理路径将始终相同。那么有没有一种方法可以搜索返回的站点列表并检查特定的物理路径是否为某个值,我会知道那是站点并从中获取要删除的站点名称。该站点的应用程序池是否在对象中?

我正在使用以下内容获取网站,

        var iisManager = new ServerManager();
        SiteCollection sites = iisManager.Sites;

或者有没有办法获得网站的“高级设置”?

标签: c#iis

解决方案


在我们将Microsoft.Web.Administration.dll程序集文件添加到项目后,请参考以下代码片段。

var iismanager = new ServerManager();
            SiteCollection sites = iismanager.Sites;
            foreach (var site in sites)
            {
                Console.WriteLine($"WebSite Name: {site.Name}");

                ObjectState siteState = site.State;
                Console.WriteLine($"Running State: {siteState}");

                ApplicationCollection applications = site.Applications;
                foreach (Microsoft.Web.Administration.Application item in applications)
                {
                    string applicationPoolName = item.ApplicationPoolName;
                    Console.WriteLine($"ApplicationPoolName: {applicationPoolName}");
                    VirtualDirectoryCollection directories = item.VirtualDirectories;
                    foreach (var directory in directories)
                    {
                        Console.WriteLine($"PhysicalPath: {directory.PhysicalPath}");
                    }
                }
                Console.WriteLine("-------------------------------");
            }

另外,这里是IIS管理器的详细用法。
https://johnlnelson.com/2014/06/15/the-microsoft-web-administration-namespace/

Microsoft.Web.Administration dll允许我们执行 IIS 管理任务。它包含一系列方便的顶级对象,例如站点、应用程序、应用程序池、应用程序域、虚拟目录和工作进程。我们可以使用 API 来获取和处理这些对象的配置和状态,并执行诸如创建站点、启动或停止站点、删除应用程序池、回收应用程序池、结束甚至卸载应用程序域等操作。
https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration?view=iis-dotnet
 </p>


推荐阅读