WCF en IIS8; * El mapeo del controlador .svc no funciona

Estoy tratando de ejecutar un servicio wcf en IIS8 en 2012 build 8400.

Al instalar la función web, las cosas wcf (en 3.51) no se encontraban como en 2008.

Cuando se instaló el mapeo del controlador svc no estaba, así que hice un:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe –i 

Ahora el mapeo de controladores está ahí, pero aún obtengo:

 The resource you are looking for does not have a handler associated with it. 

(Eliminé el controlador de archivos estáticos).

El sitio está utilizando la tubería clásica para usar la suplantación.

Más específicamente:

  1. Ejecutar el Server Manager (en la barra de tareas y menú de inicio)
  2. Elija el servidor para administrar (probablemente servidor local)
  3. Desplácese hacia abajo a la sección ” Roles and Features “.
  4. Elija ” Add Role or Feature ” en el menú desplegable de Tareas
  5. En el cuadro de diálogo ” Add Role or Feature Wizard “, haga clic en ” Features ” en la lista de páginas a la izquierda.
  6. Expanda ".Net 3.5" o ".Net 4.5" , según lo que haya instalado. (puede volver a la pantalla ” roles ” para agregarla si no la tiene).
  7. En ” WCF Services “, marca la casilla de ” HTTP-Activation “. También puede agregar tipos que no sean http si sabe que los necesita (tcp, pipes nombrados, etc.).
  8. Haga clic en el botón "Install" .

Tuve que habilitar HTTP Activation en .NET Framework 4.5 Advanced Services > WCF Services

Habilitar la activación HTTP

encienda lo siguiente en ‘Activar o desactivar las características de Windows’

a) .Net Framework 3.5 – Activación HTTP WCF y activación no Http

b) todo bajo los Servicios de WCF

Windows 8 con IIS8

  • Hit Windows+X
  • Seleccione Programs and Features (primer elemento en la lista)
  • Seleccione Turn Windows Features on or off a la izquierda
  • Expandir .NET Framework 4.5 Advanced Services
  • Expand WCF Services
  • Habilitar HTTP Activation

Prefiero hacer esto a través de un guión hoy en día

 REM install the needed Windows IIS features for WCF dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45 REM Feature Install Complete pause 

Logramos resolver el error en Windows Server 2012 por:

  1. Quitar de “Eliminar Roles y Características del Asistente” Características de .NET Framework 4.5 / ASP.NET 4.5 y todas sus características dependientes
  2. Reinstalar las características eliminadas.

Cose el orden de instalación es la causa.

Además, asegúrese de tener la Activación HTTP instalada en los Servicios WCF.

Para las máquinas con Windows 8 no hay una aplicación de “Administrador de servidores” (al menos no pude encontrarla).

Aunque pude resolver el problema . No estoy seguro de en qué secuencia hice las siguientes operaciones pero parece que una / algunas de las siguientes acciones ayudan:

  1. Encienda lo siguiente en ‘Activar o desactivar las características de Windows’ a) .Net Framework 3.5 – Activación HTTP WCF y Activación no HTTP b) todo bajo Servicios WCF (como se especifica en una de las respuestas a esta pregunta)

  2. ejecutado “ServiceModelReg.exe -i” en la carpeta “% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \”

  3. Registrado ASP.NET 2.0 a través de dos comandos (en la carpeta C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga “NT AUTHORITY \ NETWORK SERVICE” aspnet_regiis -iru

  4. PC reiniciado … parece que como resultado ## 3 y 4 algo se rompió en mi configuración de ASP.NET

  5. Repita la acción n. ° 2

  6. Instale otras dos opciones desde los “Progtwigs y características”: .Net Framework 4.5 Advanced Services. Revisé ambas opciones secundarias: ASP.NET 4.5 y servicios WCF

  7. Reinicie el grupo de aplicaciones.

La secuencia es un poco loca, pero eso me ayudó y probablemente ayudará a otros

El orden de instalación importa mucho al configurar IIS 8 en Windows 8 o Windows Server 2012.

Me enfrenté a muchos problemas al configurar IIS 8 pero finalmente estos enlaces me ayudaron

  • Instalación de IIS 8
  • Configurando WCF

Con PowerShell puede instalar la función requerida con:

 Add-WindowsFeature 'NET-HTTP-Activation' 

En Windows 10 (cliente) también puede crear una secuencia de comandos usando

 Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All 

Tenga en cuenta que este es un comando diferente del servidor skus

Es la función de activación HTTP de .NET Framework También se requiere la función de activación de proceso de Windows

Esto fue realmente tonto para mí. Agregando esto aquí ya que es uno de los hilos más populares en problemas de svc 404.

Tenía pegado en la configuración de mi proyecto ‘\ Web \ Project URL:

 http://blah.webservice.local.blahblah.com/Blah.svc 

Y por alguna razón desconocida (habiendo hecho esto miles de veces) no descubrí enseguida que el nombre del archivo .svc estaba al final.

DOH!

Acababa de pegar la dirección de mi cliente de pruebas WCF y no lo había comprobado lo suficiente. Lo que hizo en segundo plano fue crear una aplicación IIS en la dirección .svc y no obtuve nada de IIS. No pude entender cómo ni siquiera pude presionar el archivo .svc.

Solución simple, obviamente, simplemente elimine la aplicación en IIS y cambie la URL del proyecto.

Después de casi 20 años en esto, aún puedes cometer errores de colegial / errores de novato. Espero que esto ayude a alguien.