Error HTTP 404.3: no encontrado "al navegar por el servicio wcf en Windows Server 2008 (64 bits)

88

Estoy desarrollando una aplicación basada en .Net Framework 3.5 sp1 y alojada en Windows Server 2008 (64bit).

Mientras navegaba por el servicio wcf (.svc) localmente, todo está bien, pero mientras navegaba con la URL de dominio completo, se produjo un error.

La dirección local es así: http: //localhost/MyService.svc

y la dirección de dominio es así: http://MySite.ir/MyService.svc

por cierto, las páginas (.aspx) y otros archivos funcionan correctamente tanto en localhost como con la dirección de dominio.

Cualquier idea sera apreciada

Aquí hay un error detallado:


Error HTTP 404.3 - No encontrado

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. Información detallada sobre errores

Módulo: StaticFileModule

Notificación: ExecuteRequestHandler

Controlador : StaticFile

Código de error: 0x80070032

URL solicitada: http://MySite.ir:80/MyService.svc

Ruta física: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Método de inicio de sesión: anónimo

Usuario de inicio de sesión anónimo

Mori
fuente

Respuestas:

224

Asegúrese de haber activado los componentes WCF desde aquí .

O una forma alternativa y fácil es ir al panel de control -> Activar o desactivar la función de Windows -> y asegurarse de tener todas las opciones marcadas como se menciona en la siguiente captura de pantalla.

ingrese la descripción de la imagen aquí

Es posible que deba activar cada casilla y aceptar en caso de que obtenga errores al activar todas las funciones a la vez

Nirav Mehta
fuente
36
.Net Framework 4.5 Advanced Services -> Check WCF Services y -> HTTP Activation ¡lo hizo por mí!
devHead
3
Windows Server 2012: solo se necesita la activación HTTP y la opción de compartir puerto.
dibs487
2
Agregaría a esta respuesta que se activan los cuadros uno por uno. Todas las comprobaciones al mismo tiempo pueden fallar. Sucede en Windows Server 2012.
harveyt
2
esta respuesta debe estar en la parte superior
markthewizard1234
3
Esta es la respuesta correcta. Esto me resolvió el problema y no tuve que agregar nada manualmente a las asignaciones de controladores de IIS.
Anthony
25

OK, aquí está la respuesta:

Vaya a Asignaciones de manejadores | Agregar administrador de controlador -> Y luego agregue la siguiente información

Ruta de solicitud: * .svc

Tipo: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089

Nombre: svc-Integrated

Mori
fuente
3
Para cualquiera que quiera agregar esto a su archivo web.config, esto funciona para mí en un proyecto .NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr
6
Para mí, agregar la línea de @StefanMohr al Web.config no funcionó del todo. Sin embargo, cambié path="*.svc"y verb="*"funcionó muy bien. Por lo tanto, la línea que usé que funcionó fue: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(agregada en configuration / system.webServer / handlers).
Aron Boyette
11

Si alguien tiene este problema en Windows Server 2012, la respuesta de Bill Moon aquí lo resolvió para mí:

"Para Windows Server 2012 ... Desde el Administrador del servidor, haga clic en Agregar roles y características, seleccione el servidor apropiado, luego seleccione Características. En Características de .NET Framework 4.5, verá WCF Services, y debajo de eso, busque Activación HTTP ".

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

Tengo Windows 10 en mi computadora portátil y uso Visual Studio 2015 para el desarrollo de WCF. WCF funciona bien en Visual Studio, pero cuando se aloja en IIS, obtengo el mismo error.

Revisé el controlador de IIS. Faltaba la extensión svc. Así que intenté agregar un nuevo controlador en IIS como lo sugirió Mori en la primera respuesta. No encontré el tipo "System.ServiceModel.Activation.HttpHandler".

Así que abrí "Activar o desactivar las funciones de Windows" e instalé las funciones resaltadas en la captura de pantalla.

Esto funcionó para mí.

ingrese la descripción de la imagen aquí

Añil
fuente
0

Si está utilizando .Net 4.x, PublicKeyToken es 31bf3856ad364e35.

Sin embargo, siguiendo esta publicación sobre cómo instalar los servicios WCF correctamente en IIS, el controlador se configuró para mí.

Thomas Hagström
fuente
0

Quería agregar esto como un comentario a la respuesta, pero no tenía suficiente reputación para ello. Intenté ejecutar ServiceModelReg y aspnet_regiis.exe con varios indicadores y agregué la función de activación HTTP, pero aún así no funcionó. Incluso el uso de la interfaz de usuario de mapeo del controlador en IIS no funcionó, ya que no pudo encontrar System.ServiceModel.Activation.HttpHandler. Lo que finalmente funcionó fue agregar el controlador que Mori menciona manualmente a mi archivo web.config.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

Mi proyecto estaba ejecutando .Net 3.5 e IIS 7.5 en Windows 7 e IIS 7.0 en Win Server 2008 R2.

Janspeed
fuente
0

Intente desmarcar las activaciones HTTP de WCF desde la ventana "Activar o desactivar las funciones de Windows" ( consulte aquí ) y vuelva a instalarlo en

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

y ejecutar ServiceModelReg -i

Derviş Özçelik
fuente