我需要从传统的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
%>
非常感谢你的帮助; - )
答案 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
%>