如何在网站中获取网站应用程序名称?
How can you get a website application name within a website?
我希望能够检查现有网站中是否存在应用程序,但我没有找到任何东西。目前我有一个安装程序项目,它从用户那里获取现有网站名称的输入。我用它来检查 IIS 中当前存在的站点,如果是这样,我想搜索现有的应用程序以查看特定的 1 是否存在。这是我拥有的:
private void CheckWebsiteApps()
{
SiteCollection sites = null;
try
{
//Check website exists
sites = mgr.Sites;
foreach (Site s in sites)
{
if (!string.IsNullOrEmpty(s.Name))
{
if (string.Compare(s.Name, "mysite", true) == 0)
{
//Check if my app exists in the website
ApplicationCollection apps = s.Applications;
foreach (Microsoft.Web.Administration.Application app in apps)
{
//Want to do this
//if (app.Name == "MyApp")
//{
// Do Something
//}
}
}
}
}
}
catch
{
throw new InstallException("Can't determine if site already exists.");
}
}
显然 app.Name 不存在,那么我该怎么做才能得到这个?
您可以使用 Microsoft.Web.Administration 和 Microsoft.Web.Management API 的 IIS 来执行此操作。虽然它们不在 GAC 中,但您必须从 inetsrv 文件夹中引用它们。在我的机器上,它们位于...
- C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
- C:\Windows\System32\inetsrv\Microsoft.Web.Management.dll
下面是一些枚举它们的示例代码,
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
foreach (var site in serverManager.Sites)
{
Console.WriteLine("Site -> " + site.Name);
foreach (var application in site.Applications)
{
Console.WriteLine(" Application-> " + application.Path);
}
}
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
}
跟进:
应用程序没有名称,只有根站点在 IIS 中有名称。应用程序只有一个路径(因为它们是站点的子项)。如果 Path 是“/”,那么 Application 就是站点的根应用程序。如果路径不是 / 那么它是该站点的第二个以上子应用程序。所以你需要使用 Application.Path 来做你想做的事。
我希望能够检查现有网站中是否存在应用程序,但我没有找到任何东西。目前我有一个安装程序项目,它从用户那里获取现有网站名称的输入。我用它来检查 IIS 中当前存在的站点,如果是这样,我想搜索现有的应用程序以查看特定的 1 是否存在。这是我拥有的:
private void CheckWebsiteApps()
{
SiteCollection sites = null;
try
{
//Check website exists
sites = mgr.Sites;
foreach (Site s in sites)
{
if (!string.IsNullOrEmpty(s.Name))
{
if (string.Compare(s.Name, "mysite", true) == 0)
{
//Check if my app exists in the website
ApplicationCollection apps = s.Applications;
foreach (Microsoft.Web.Administration.Application app in apps)
{
//Want to do this
//if (app.Name == "MyApp")
//{
// Do Something
//}
}
}
}
}
}
catch
{
throw new InstallException("Can't determine if site already exists.");
}
}
显然 app.Name 不存在,那么我该怎么做才能得到这个?
您可以使用 Microsoft.Web.Administration 和 Microsoft.Web.Management API 的 IIS 来执行此操作。虽然它们不在 GAC 中,但您必须从 inetsrv 文件夹中引用它们。在我的机器上,它们位于...
- C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
- C:\Windows\System32\inetsrv\Microsoft.Web.Management.dll
下面是一些枚举它们的示例代码,
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
foreach (var site in serverManager.Sites)
{
Console.WriteLine("Site -> " + site.Name);
foreach (var application in site.Applications)
{
Console.WriteLine(" Application-> " + application.Path);
}
}
Console.WriteLine("Press any key...");
Console.ReadKey(true);
}
}
跟进:
应用程序没有名称,只有根站点在 IIS 中有名称。应用程序只有一个路径(因为它们是站点的子项)。如果 Path 是“/”,那么 Application 就是站点的根应用程序。如果路径不是 / 那么它是该站点的第二个以上子应用程序。所以你需要使用 Application.Path 来做你想做的事。