如何从传统ASP页面回收IIS应用程序池?

时间:2018-02-01 20:28:36

标签: iis asp-classic iis-8 application-pool

我需要从传统的ASP页面以编程方式回收IIS应用程序池。 我怎么能做到这一点?

我可以从VBS进行,但不能从ASP页面进行。

到目前为止,我已经尝试过这段代码,它不返回任何错误,但什么都不做:

<%
Set objWShell = Server.CreateObject("WScript.Shell")
    Set objCmd = objWShell.Exec("%systemroot%\SysWow64\cmd.exe /c %systemroot%\system32\inetsrv\appcmd.exe recycle apppool /apppool.name:MyAppPoolNameHere")
    Set objCmd = nothing
Set objWShell = nothing
%>

我也尝试过以下代码(在VBS中有效,但不在ASP页面内):

<%
Set locator = Server.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.connectserver("MyServerName", "root/MicrosoftIISv2")
Set APCollection = Service.InstancesOf("IISApplicationPool")

Response.write APCollection.count

For Each APInstance In APCollection
    Response.Write "<br>" & APInstance.Name
    APInstance.Recycle
Next
%>

非常感谢你的帮助; - )

1 个答案:

答案 0 :(得分:0)

很久以前面临同样的问题,最终编写了编辑web.config文件的代码,从而导致应用程序池的自动回收。

要使其工作,您需要通过web.config文件授予IUSR帐户的完全权限,我不认为这些是默认提供的。

代码如下:(大量调试,你可以删除所有的Response.Write行)

<% Option Explicit %>
<% Response.Buffer = True %>
<%
Const FILE_PATH="C:\Inetpub\wwwroot\Web.config"
Dim objFSo, objFile, strData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Response.Write("File: " & FILE_PATH & ", Exist? " & objFSO.FileExists(FILE_PATH) & "<br />")
Response.Flush()
Set objFile = objFSO.OpenTextFile(FILE_PATH)
strData = objFile.ReadAll
objFile.Close
Response.Write("Got " & Len(strData) & " bytes of data<br />")
Response.Flush()
Set objFile = objFSO.CreateTextFile(FILE_PATH)
objFile.Write(strData)
objFile.Close
Response.Write("Success")
Response.Flush()
Set objFile = Nothing
Set objFSO = Nothing
%>