【发布时间】:2014-10-29 03:10:26
【问题描述】:
我想通过我的应用回收应用池。
以前我将应用程序池名称存储在我的数据库中并使用它来回收。 但是过去发生过我们将应用程序从一个应用程序池移动到另一个应用程序池的情况,有时我们忘记更新数据库中的应用程序池名称。
所以我正在考虑通过应用程序获取应用程序池名称并将其用于回收。
【问题讨论】:
标签: c# asp.net iis application-pool
我想通过我的应用回收应用池。
以前我将应用程序池名称存储在我的数据库中并使用它来回收。 但是过去发生过我们将应用程序从一个应用程序池移动到另一个应用程序池的情况,有时我们忘记更新数据库中的应用程序池名称。
所以我正在考虑通过应用程序获取应用程序池名称并将其用于回收。
【问题讨论】:
标签: c# asp.net iis application-pool
@Razon 答案的修改版 :)
public static string GetCurrentApplicationPoolName()
{
ServerManager manager = new ServerManager();
string DefaultSiteName = System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();
Site defaultSite = manager.Sites[DefaultSiteName];
string appVirtualPath = HttpRuntime.AppDomainAppVirtualPath;
string appPoolName = string.Empty;
foreach (Application app in defaultSite.Applications)
{
string appPath = app.Path;
if (appPath == appVirtualPath)
{
appPoolName = app.ApplicationPoolName;
}
}
return appPoolName;
}
【讨论】:
在许多情况下,仅从环境变量中读取应用程序池的名称就足够了:
var apppool = System.Environment.GetEnvironmentVariable(
"APP_POOL_ID", EnvironmentVariableTarget.Process);
【讨论】:
这可能会有所帮助:ApplicationPoolName 属性
命名空间:Microsoft.Web.Administration 程序集:Microsoft.Web.Administration(在 Microsoft.Web.Administration.dll 中)
【讨论】:
Install-Package Microsoft.Web.Administration