使用Microsoft.Web.Administration.dll中的WorkerProcess.GetRequests方法时出现错误,此问题出现在IIS 8.5上。

5
我正在使用C#(.NET Framework 4.5)编写一个Windows服务应用程序,运行在Microsoft Windows Server 2012 R2 Standard x64(IIS 8.5)上,并且使用Microsoft.Web.Administration.dll(从C:\ Windows \ System32 \ inetsrv中的7.0.0.0版本)。
当我运行以下代码时:
using(var srvmngr = new Microsoft.Web.Administration.ServerManager())
{
    foreach(var pl in srvmngr.ApplicationPools)
    {
         foreach (var w3wp in pl.WorkerProcesses)
         {
             foreach (var request in w3wp.GetRequests(0))
             {
                 var success = true;
             }
        }
    }
}

此服务以管理员权限启动,调用“GetRequests(0)”方法会引发以下异常:

System.NotImplementedException - {"The method or operation is not implemented."}

堆栈跟踪:

at Microsoft.Web.Administration.Interop.IAppHostMethodInstance.Execute()
at Microsoft.Web.Administration.ConfigurationMethodInstance.Execute()
at Microsoft.Web.Administration.WorkerProcess.GetRequests(Int32 timeElapsedFilter)

在 PowerShell 中使用以下代码时,出现了相同的异常:

PS > [System.Reflection.Assembly]::LoadFrom("C:\windows\system32\inetsrv\Microsoft.We‌​‌​b.Administration.dll" )
PS > $sm = new-object Microsoft.Web.Administration.ServerManager
PS > $sm.workerprocesses | foreach-object {$_.GetRequests(0)}

有人能给我建议吗?


1
使用以下命令时出现了相同的“未实现”异常: %systemroot%\system32\inetsrv\appcmd list requests - Andrii Motrych
1个回答

11

我终于解决了我的问题。

按照以下步骤完成此问题: 添加角色和功能向导 -> 服务器角色 -> Web 服务器(IIS)-> Web 服务器 -> 健康和诊断 -> 请求监视器


请接受您的答案,以向他人表明它解决了您的问题。 - Oliver
在我的情况下,在安装“动态IP限制”IIS插件之后(之前运行正常),出现了这个错误。目前还没有找到解决方案。显然,请求监视器仍然安装着。 - pkExec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接