No se pueden servir servicios WCF en IIS en Windows 8


199

Cuando intento servir un servicio WCF en IIS en una máquina con Windows 8, aparece el error bien conocido

La página que está solicitando no se puede servir debido a la configuración de la extensión. Si la pagina es un script, agregue un controlador. Si el archivo debe descargarse, agregue un mapa MIME.

La antigua solución era ejecutar, aspnet_regiis -ipero este comando parece haber quedado en desuso en Windows 8 dando respuestaThis option is not supported on this version of the operating system. (...) .

¿Cuál sería el trabajo alrededor?

(Ya he habilitado correctamente las aspxpáginas normales , por lo que la mayoría de la configuración de IIS parece estar en buen estado).


Para obtener más información sobre el aspnet_regiis -icomando para usuarios anteriores a Windows 8, consulte este enlace: aspsnippets.com/Articles/…
David

Respuestas:


406

Parecía ser obvio; el servicio WCF debe habilitarse usando Programs and Features -> Turn Windows features on or offen el Panel de control. Vaya .NET Framework Advanced Services -> WCF Servicesy habilite HTTP Activationcomo se describe en esta publicación de blog en mdsn .

Desde el símbolo del sistema (como administrador), puede ejecutar:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

Si obtiene un error, use el siguiente

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45

66
Pasé tiempo buscando en el Administrador de IIS. Creo que el Administrador de IIS debería tener un ícono que dirija o informe al usuario sobre los Servicios Advnaced de .NET Framework.
Tony_Henrich

Utilizando el símbolo del sistema, recibí el error "La operación se ha completado pero la función WCF-HTTP-Activation no estaba habilitada. Es posible que no se habilite una función principal requerida. Puede usar la opción / enable-feature / all para habilitar automáticamente cada función principal de la siguiente lista. Si las características principales ya están habilitadas, consulte el archivo de registro para obtener más diagnósticos ". En su lugar, utilicé el método GUI para saber qué estaba activando y funcionó.
Ben Adams

55
Tengo el mismo "REQUERIDO operación padre puede no estar habilitada" error como Ben Anderson, y probamos la sugerencia en el mensaje de error (añadiendo el /allargumento), que luego funcionó bien: DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi

1
Usted señor, es asombroso. También puede agregar (es un pequeño detalle) que esto se puede hacer dependiendo de la versión de .Net Framework. Al igual que en.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18

Este es un salvavidas. La mayoría de las soluciones en línea para este problema solo le permiten habilitar .Net 3.5 Framework en las características web. Eso no es suficiente. También debes dar el paso mencionado aquí.
markaaronky

95

Para Windows Server 2012, la solución es muy similar a la de faester (ver arriba). Desde el Administrador del servidor, haga clic en Add roles and features, seleccione el servidor apropiado, luego seleccione Features. Debajo .NET Framework 4.5 Features, verás WCF Services, y debajo de eso, encontrarás HTTP Activation.


Gracias por esto ! pero ¿qué hay de .Net 4? ¿Crees que habilitar estas funciones hará lo mismo para .Net v4.0?
Aladdin Gallas

2
En cualquier aplicación web existente, también deberá hacer lo siguiente después de agregar la función de Windows: - Iniciar inetmgr - Abrir "Asignaciones de controladores" - Verificar si las asignaciones svc-ISAPI para la extensión * .svc están presentes. De lo contrario, utilice la acción "Volver a los padres" para copiarlos del sitio web principal. Tenga en cuenta que esto supone que las asignaciones de controladores personalizados se configuran en web.config para la aplicación, como suele ser el caso en IIS7 +. Si no, los perderá al ejecutar "Revertir a padre".
Berend Engelbrecht

13

Siga los dos pasos siguientes en IIS 8.0

Agregar nuevo tipo MIME y HttpHandler

  1. Extensión: .svc, tipo MIME: application / octet-stream

  2. Ruta de solicitud: * .svc, Tipo: System.ServiceModel.Activation.HttpHandler, Nombre: svc-Integrated


La mejor solución para mi antigua instalación de Windows 7 que no se habilita: .Net 3.5 (Activación Http y no Http) y WAS. Demasiado delicado para reinstalar el sistema operativo
user919426

Vale la pena conocer este método, especialmente al crear y agregar sus propios controladores. Sin embargo, si usa 'activar y desactivar las características de Windows' obtendrá la mayoría de las extensiones de archivo conocidas, lo que le ahorrará el tiempo de agregar cada una individualmente (y descubrir todos los detalles correctos)
Daniel Hollinrake


3

Esta es realmente la misma solución que la solución de Faester y la de Bill Moon, pero así es como lo hace con PowerShell:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

Por supuesto, tampoco hay nada que le DISMimpida llamar desde PowerShell.


Muy agradable. Gracias por la información.
Rod Hartzell

-1

puede agregar este código a web.config en asp mvc

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

puede cambiar la extensión de archivo con su extensión de archivo


Hola @malik: ¿podría aclarar cómo las extensiones de archivo de asignación podrían hacer que los puntos finales svc funcionen?
Faester

Si entiendo correctamente, puede cambiar la extensión con su deseado. Puedes mirar desde feedforall.com/mime-types.htm pero dirías otra cosa, lo siento, no puedo entender.
malik masis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.