Error 0x80004001 al usar IIS Request Monitor – Solución completa

¿Te topaste con el temido ERROR (hresult:80004001, message: Command execution failed. Not implemented) al intentar ejecutar %windir%\system32\inetsrv\appcmd list requests? A continuación encontrarás el origen del fallo y la guía definitiva—probada en entornos de producción—para restaurar por completo la funcionalidad de Request Monitor en IIS.

Índice

Síntoma

Al solicitar la lista de peticiones activas con appcmd list requests:

%windir%\system32\inetsrv\appcmd list requests

IIS devuelve el resultado:

ERROR ( hresult:80004001, message: Command execution failed. Not implemented )
  • No se registran errores extra en el Visor de Eventos (Canal Application ↦ Microsoft‑Windows‑IIS‑Configuration Warnings).
  • La consola se ejecuta con privilegios de Administrador.
  • Los servicios WAS y W3SVC están iniciados.

Causa principal

El código 0x80004001 corresponde a E_NOTIMPL: la función requerida no está implementada porque el módulo Request Monitor no se encuentra instalado, se eliminó su payload o la edición del sistema operativo no lo admite (p. ej. Windows 10 Home o una imagen Server Core mínima).

Solución paso a paso

PasoAcción recomendadaDetalle
1Confirmar la presencia de Request MonitorEn Server Manager navega a Manage ► Add Roles and Features ► Web Server (IIS) ► Health and Diagnostics ► Request Monitor.
Alternativamente, en PowerShell o CMD:
dism /online /Get-Features | find "IIS-RequestMonitor"
Enabled → el componente está instalado.DisabledDisabled with Payload Removed → falta instalarlo o el payload se suprimió con /Remove.
2Instalar o habilitar la característicaVía GUI: marca Request Monitor y finaliza el asistente.
Vía CMD/PowerShell:
dism /online /Enable-Feature /FeatureName:IIS-RequestMonitor
Si el payload fue quitado:
dism /online /Add-Package /PackagePath:X:\sources\sxs (o imagen WSUS).
Finaliza con iisreset para recargar los módulos nativos.
3Verificar operaciónEjecuta de nuevo:
%windir%\system32\inetsrv\appcmd list requests
Deberías ver una lista similar a:
REQUEST “00000005” (time:00:00:01, addr:10.0.0.42, os200) GET /Default.aspx
Si no hay peticiones activas se mostrará una salida vacía sin error.
4Opciones de diagnóstico alternativasFailed Request Tracing (FREB): habilitar a nivel de sitio para capturar los 50 eventos más recientes. HTTPERR logs: revisa %SystemRoot%\System32\LogFiles\HTTPERR para errores de capa Kernel Mode. Debug Diag Tool: genera volcados ante cuelgues o consumo elevado de CPU. Performance Counters: monitorea W3WP Requests QueuedRequests Active para alertas proactivas.

Inspección detallada de DISM y PowerShell

La consulta con dism indica el estado real del componente; sin embargo, para automatizar un clúster de granja Web conviene usar PowerShell DSC o Ansible. Ejemplo rápido:

Get-WindowsFeature -IIS-RequestMonitor | Where-Object {$_.InstallState -ne 'Installed'} | Install-WindowsFeature ‑IncludeAllSubFeature ‑Restart:$false

Compatibilidad por ediciones de Windows

  • Windows Server 2012 R2 ► 2025: la característica está disponible en todas las ediciones (Standard, Datacenter, Essentials) salvo Server Core con la capa mínima (FOD quitará el payload).
  • Windows 10/11 Pro y Enterprise: Request Monitor forma parte del stack IIS estándar; requiere la activación explícita en Activar o Desactivar Características de Windows.
  • Windows Home: IIS no está soportado oficialmente, por tanto tampoco Request Monitor.

Cómo interpreta IIS el código 0x80004001

Cuando appcmd invoca a la API nativa HttpApiQueryStatistics, ésta delega la inspección de W3WP a Request Monitor. Si no encuentra la DLL correspondiente (reqmonitor.dll) o la clave HKLM\SYSTEM\CurrentControlSet\Services\IISADMIN\Parameters\RequestMonitorEnabled está ausente, el subsistema devuelve E_NOTIMPL. En tiempo de ejecución, el manejador gestiona la excepción y expone el HRESULT directamente.

Buenas prácticas para entornos de producción

  1. Limita el acceso: Request Monitor revela URLs completas y cabeceras; delega su uso a cuentas de Ops con Just‑In‑Time (JIT) y audita la ejecución de appcmd.
  2. Automatiza la instalación: incluye IIS-RequestMonitor en tu imagen Golden o plantilla Terraform para evitar configuraciones drifts.
  3. Capta sólo lo necesario: el monitor impacta mínimamente el rendimiento, pero capturar FREB y Debug Diag simultáneamente puede añadir latencia perceptible.
  4. Integra alertas: combina los contadores Requests Rejected y Application Pool Restarts con tu plataforma APM (Prometheus, Grafana) para una visión end‑to‑end.

Preguntas frecuentes (FAQ)

¿Request Monitor afecta al rendimiento?

Consumirá ciclos mínimos (≤1 %) porque únicamente enumera peticiones en memoria cuando es invocado; no registra de forma continua como FREB.
¿Puede coexistir con ARR o Web Farm Framework?

Sí. En configuraciones ARR, Request Monitor se instala en cada nodo independientemente del balanceador.
¿Cómo filtrar la salida por Application Pool?

Usa appcmd list requests /APPLICATIONPOOL.name:"DefaultAppPool".
¿Se puede habilitar en Server Core sin GUI?

Instala la Feature on Demand: Dism /Add-Capability /CapabilityName:IIS-RequestMonitor~~~~0.0.1.0.

Conclusión

El error 0x80004001 al invocar Request Monitor indica una carencia de módulo, no un fallo de IIS en sí. Verificar, instalar y reiniciar el componente restablece de inmediato la visibilidad de las solicitudes activas, permitiendo diagnosticar cuellos de botella y filtrados sin recurrir a trazas de alto volumen.

Índice