2010-04-09 28 views
58

Hace poco creé un servicio WCF que funciona bien cuando se prueba desde Visual Studio 2008. Pero cuando despliego el proyecto a IIS y trato de acceder al archivo .svc desde IIS, obtengo este error:HTTP 404 al acceder al archivo .svc en IIS

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

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

en las asignaciones de controlador de Administrador de IIS, puedo ver dos entradas para .svc:

svc-Integrated and svc-ISAPI-2.0 

Respuesta

62

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


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

+0

Ejecuto esto pero todavía no funciona. – Attilah

+0

¿Intentó reiniciar IIS después? – tvanfosson

+0

sí, corrí iisreset. – Attilah

1

comprueba que el directorio se ha convertido en una aplicación es el IIS.

3

veo que ya ha resuelto su problema - pero para la posteridad:

Hemos tenido un problema similar, y el manejador de la VPC ya se ha instalado correctamente. Nuestro problema era el manejador ExtensionlessUrl procesando solicitudes antes de que llegaran al controlador SVC.

Para verificar esto: en Asignaciones de manejador en el Administrador de IIS en el nivel del servidor web, vea la lista de manejadores en orden (es una opción en el lado derecho). Si los distintos manejadores ExtensionlessUrl aparecen sobre los manejadores SVC, muévalos hacia abajo hasta que estén abajo.

1

He tenido el mismo problema hoy.

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 ASP.Net de "1.1.4322" (que había establecido como predeterminado) a 2.0.50727.

Una vez que hice eso, pude hacer clic derecho en el archivo .svc, hacer clic en "Examinar" y ver la página web de Servicio amigable.

44

He encontrado these instructions on a blog post indicó que este paso, que trabajó para mí (Windows 8, 64 bits):

Asegúrese de que en las características de Windows, tiene las dos opciones están marcadas bajo WCF .NET Framework. Vaya al Panel de control -> Programas y características -> Activar/desactivar características de Windows -> Funciones -> Agregar funciones -> Funciones de .NET Framework X.X. Asegúrate de que .Net framework dice que está instalado y asegúrate de que el nodo de Activación WCF debajo de él esté seleccionado (casilla de verificación marcada) y que ambas opciones en Activación WCF también estén marcadas.
These are: 
* HTTP Activation 
* Non-HTTP Activation 
Both options need to be selected (checked box ticked).
+1

Si pudiera votar esto más de una vez, lo haría. ¡NUTS, aplausos! –

+0

impresionante gracias – nologo

0

En mi caso, el error fue causado por la configuración de asignación incorrecta en el archivo applicationhost.config (\ System32 \ inetsrv \ config). Por algún motivo, 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.

55

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

WCF HTTP 404

Gracias va a "Aaron D"

+5

esto es bueno para Windows 10 también –

+1

Por mucho, la opción más fácil. – BIDeveloper

+1

Ese fue el truco de Windows 10, gracias :) –

0

hay 2 .NET Framework versión se incluye bajo las características en función add/características en el servidor 2012

a. 3.5

b. 4.5

Según el marco utilizado, puede habilitar HTTP-Activation bajo los servicios de WCF. :)

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.

1

Esto también puede convertirse en un problema después de habilitar la compatibilidad de administración de IIS 6 en Windows 10. Establecer la activación HTTP de marco bajo Servicios de WCF solucionará el problema.

Cuestiones relacionadas