HTTP 404 al acceder al archivo .svc en IIS

86

Recientemente creé un servicio WCF que funciona bien cuando se prueba desde Visual Studio 2008. pero cuando implemento el proyecto en IIS e intento acceder al archivo .svc desde IIS, aparece este error:

"Server Error in '/' Application.The resource cannot be found.  "

He tenido este problema durante los últimos 4 días.

en las asignaciones de controladores de IIS Manager, puedo ver dos entradas para .svc:

svc-Integrated and svc-ISAPI-2.0
Atilah
fuente

Respuestas:

75

Debe agregar una asignación para la extensión SVC a ASP.NET. La forma más sencilla de hacerlo es ejecutar ServiceModelReg.exe -idesde C: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation. También es posible que deba habilitar ASP.NET si aún no lo ha hecho.


Si está utilizando Windows Server 2012 o 2016, siga estas instrucciones en su lugar:

tvanfosson
fuente
¿Intentó reiniciar IIS después?
tvanfosson
¿Tiene ahora un mapeo mime para .svc?
tvanfosson
No es mapeo mimo: mapeo de extensiones de aplicación. consulte msdn.microsoft.com/en-us/library/ms752252(v=vs.90).aspx .
Michael Freidgeim
22
Importante: no haga esto en Server 2012 con .NET 4.5 instalado. Me jodió hasta que luego ejecuté ServiceModelReg.exe -ua. Consulte aquí la solución Server 2012: stackoverflow.com/questions/11116134/…
Scott Anderson
109

Lo que funcionó para mí, en Windows 2012 Server R2:

WCF HTTP 404

Gracias a "Aaron D"

Stefan Michev
fuente
3
De lejos, la opción más fácil.
BIDeveloper
Eso funcionó para mí en computadoras de escritorio Win10, Win8.1 y servidor Win2012 :) ¡Gracias!
Patrón
Eso funcionó para mí en computadoras de escritorio Win10, Win8.1 y servidor Win2012 :) ¡Gracias!
Skipper
2
Por alguna razón, tuve que instalar la función tanto para 3.5 como para 4.5, y a través de la línea de comando: dism /online /enable-feature /featurename:WCF-http-Activation45 /all y también dism /online /enable-feature /featurename:WCF-http-Activation /all
Rocklan
1
También funciona en Sever 2019
Zar Shardan
56

Encontré estas instrucciones en una publicación de blog. que indicaba este paso, que funcionó para mí (Windows 8, 64 bits):

Asegúrese de que en las características de Windows, tenga marcadas las dos opciones de WCF en .Net framework. Así que vaya a Panel de control -> Programas y características -> Activar / desactivar características de Windows -> Características -> Agregar características -> Características de .NET Framework XX. Asegúrese de que .Net framework diga que está instalado, y asegúrese de que el nodo de activación de WCF debajo de él esté seleccionado (casilla de verificación marcada) y que ambas opciones en Activación de WCF también estén marcadas.
Estos son:
* Activación HTTP
* Activación no HTTP
Ambas opciones deben seleccionarse (casilla marcada marcada).
Aaron D
fuente
2
Si pudiera votar esto más de una vez, lo haría, esto me estaba volviendo loco, ¡salud!
Chris W.
4

Veo que ya resolvió su problema, pero para la posteridad:

Tuvimos un problema similar y el controlador SVC ya estaba instalado correctamente. Nuestro problema fue que el controlador ExtensionlessUrl procesaba las solicitudes antes de que llegaran al controlador SVC.

Para verificar esto, en Asignaciones de controladores en el Administrador de IIS en el nivel del servidor web, vea la lista de controladores en orden (es una opción en el lado derecho). Si los diversos controladores ExtensionlessUrl aparecen encima de los controladores SVC, muévalos repetidamente hacia abajo hasta que estén en la parte inferior.

Iñigo Surguy
fuente
1

Verifica que su directorio se haya convertido en una Aplicación es su IIS.

esylvestre
fuente
1

Hoy he tenido el mismo problema.

Para mí, la solución fue ir a IIS, hacer clic con el botón derecho en el nuevo nombre del sitio web, seleccionar Propiedades, ASP.Net y cambiar la versión de ASP.Net de "1.1.4322" (que había establecido como predeterminada). al 2.0.50727.

Una vez hecho esto, podía hacer clic con el botón derecho en el archivo .svc, hacer clic en "Examinar" y ver la página web amigable del Servicio.

Mike Gledhill
fuente
1

Esto también puede convertirse en un problema después de habilitar la compatibilidad con la administración de IIS 6 en Windows 10. La configuración de la activación HTTP del marco en los servicios WCF solucionará el problema.

Al Nolan
fuente
0

En mi caso, el error fue causado por una configuración de mapeo incorrecta en el archivo applicationhost.config (\ System32 \ inetsrv \ config). Por alguna razón, Visual Studio 2013 lo corrompió al crear un directorio virtual en IIS. La solución fue editar manualmente la sección de sitios en el archivo.

user405723
fuente
0

Hay 2 versiones de .net framework que se proporcionan bajo las características en agregar rol / características en el servidor 2012

a. 3,5

segundo. 4.5

Dependiendo del marco utilizado, puede habilitar la activación HTTP en los servicios WCF. :)

Raj Kumar
fuente
0

En mi caso, Win 10. El archivo applicationHost.config está dañado por VS 2012. Y puede obtener la copia del historial de este archivo en C: \ inetpub \ history. Luego reinicie IIS y funciona correctamente.

phuongdnguyen
fuente
0

Tuve que agregar la extensión .svc a las extensiones permitidas en la configuración de filtrado de solicitudes (obtuve errores 404.7 antes).

ingrese la descripción de la imagen aquí

martinosa
fuente
0

Agregar el sufijo .svc como se permite en el filtrado de solicitudes funcionó para mí.

Brian King
fuente
0

Ninguna de las soluciones anteriores resolvió este error por mí. Tuve que configurar lo siguiente en web.config:

system.servicemodel > bindings > webHttpBinding > binding:
<security mode="Transport">
  <transport clientCredentialType="None" />
</security>

Me gustaría aprovechar esta oportunidad para MALDICIAR a Microsoft una vez más por crear un lío tan grande con .NET Framework y hacer que la vida de los desarrolladores sea tan miserable durante tanto tiempo.

Esmirna
fuente