从自己的线程停止 IIS 网站
Stop IIS website from its own thread
我正在使用以下代码从它自己的线程停止我的 WCF 服务,以更新我的服务使用的一些文件。
try
{
var server = new ServerManager();
var site = server.Sites.FirstOrDefault(s => s.Name == "Default Web Site");
if (site != null)
{
Thread.Sleep(1000);
site.Stop();
if (site.State == ObjectState.Stopped)
{
Thread.Sleep(5000);
}
site.Start();
}
else
{
throw new FaultException("Server Are Trying To Stop Is not Found");
}
}
catch (Exception ex)
{
throw new FaultException(ex.Message);
}
但是当我执行代码时出现以下错误:
"Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
我认为你应该 运行 Powershell 脚本来处理这种情况,因为你想停止进程,据我所知,它是自我的。这意味着停止后,您的进程将被终止并且无法执行任何更新。使用电源 shell 您可以停止进程,复制文件并重新开始
Import-Module WebAdministration
Stop-WebSite 'Default Web Site'
#... copy files here
Start-WebSite 'Default Web Site'
我正在使用以下代码从它自己的线程停止我的 WCF 服务,以更新我的服务使用的一些文件。
try
{
var server = new ServerManager();
var site = server.Sites.FirstOrDefault(s => s.Name == "Default Web Site");
if (site != null)
{
Thread.Sleep(1000);
site.Stop();
if (site.State == ObjectState.Stopped)
{
Thread.Sleep(5000);
}
site.Start();
}
else
{
throw new FaultException("Server Are Trying To Stop Is not Found");
}
}
catch (Exception ex)
{
throw new FaultException(ex.Message);
}
但是当我执行代码时出现以下错误:
"Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
我认为你应该 运行 Powershell 脚本来处理这种情况,因为你想停止进程,据我所知,它是自我的。这意味着停止后,您的进程将被终止并且无法执行任何更新。使用电源 shell 您可以停止进程,复制文件并重新开始
Import-Module WebAdministration
Stop-WebSite 'Default Web Site'
#... copy files here
Start-WebSite 'Default Web Site'