c# - 如何使用 c# 在 IIS 中获取站点的物理路径?
问题描述
当用户卸载应用程序时,我需要删除站点。我不知道站点名称,但物理路径将始终相同。那么有没有一种方法可以搜索返回的站点列表并检查特定的物理路径是否为某个值,我会知道那是站点并从中获取要删除的站点名称。该站点的应用程序池是否在对象中?
我正在使用以下内容获取网站,
var iisManager = new ServerManager();
SiteCollection sites = iisManager.Sites;
或者有没有办法获得网站的“高级设置”?
解决方案
在我们将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>
推荐阅读
- python - Perforce - 创建和编辑更改列表
- python - 如何在不修改原始字符串的情况下将 .islower() 用于 if 语句
- sql - SQL - 如何对来自 3 个其他查询的列求和
- css - Bootstrap 工具提示箭头边框和背景颜色
- android - 如何为嵌套类函数编写 Frida 钩子?
- python - 如何在 pyspark 中调用预测函数?
- java - 为什么 FileWriter 没有像它应该的那样创建一个新行?JAVA
- c++ - 初始化指向类对象的指针容器?
- sql - 创建与 SQL Server 存储过程的 Microsoft Excel 连接
- ios - 如何为 Google Cardboard 配置 React 360