是否有可用于从程序重置IIS的IIS管理UI的替代方法?..
现在我们已经创建了一个批处理文件,如果iis重置并每小时安排一次......
我只想要一些东西,以便我们不能重置iis ....
答案 0 :(得分:2)
查看IIS Admin API,特别是IIisServiceControl界面。
答案 1 :(得分:1)
使用WMI界面,您可以以编程方式回收AppPool
使用SDK中的MgmtClassGen生成您的WMI类:
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\mgmtclassgen" IIsApplicationPool /n root\MicrosoftIISv2 /l VB /p IIsApplicationPool.vb
-OR -
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\mgmtclassgen" IIsApplicationPool /n root\MicrosoftIISv2 /l CS /p IIsApplicationPool.cs
然后在您的代码中使用它:
Dim msScope As New ManagementScope("root\MicrosoftIISv2")
Dim wmiIISAppPool As IIsApplicationPool
Try
wmiIISAppPool = New IIsApplicationPool(msScope, String.Format("W3SVC/AppPools/{0}", _AppPoolID))
'Recycle it
wmiIISAppPool.Recycle()
Catch ex As Exception
LogEvent(" *** ERROR - AppPoolRecycle failed: AppPoolID: {0} {1}", _AppPoolID, ex.Message)
Finally
If Not wmiIISAppPool Is Nothing Then wmiIISAppPool.Dispose()
End Try
答案 2 :(得分:0)
您还可以在命令提示符下使用iisreset重新启动所有IIS。
我相信tvanfossan的答案还可以,但他建议的界面我认为只能重置一次IIS。如果您有挂起的进程,您可能希望以编程方式识别要在应用程序池中运行的进程。
我建议同时查看脚本界面:http://msdn.microsoft.com/en-us/library/ms526050.aspx
答案 3 :(得分:0)
在system32文件夹中有一个名为iisreset.exe的文件。您可以创建批处理来执行它。