Pregunta

Tengo un servicio WCF al que se llama desde JavaScript del lado del cliente.La llamada falla con un servicio de error de JavaScript nulo.El seguimiento del asistente de WebDevelopment muestra que las llamadas para cargar el archivo de soporte jsdebug generan un error 404 (archivo no encontrado).

Reiniciar IIS o borrar los archivos temporales ASP.Net o configurar lote="false" en la etiqueta de compilación en web.config no resuelve el problema

Desde el navegador

https://Miservidor/MiAplicación/Services/MyService.svc muestra los metadatos del servicio

sin embargo

https://Miservidor/MiAplicación/Services/MyService.svc/jsdebug da como resultado un 404.

El problema parece estar en el protocolo https.Con http /jsdebug descarga el archivo JS de soporte.

¿Algunas ideas?

tia

¿Fue útil?

Solución

¡Lo averigué!

Aquí está la sección de configuración de servicios de web.config

Mire el atributo vinculanteConfiguration en el punto final.El valor "webBinding" apunta a la etiqueta nombre del enlace="webBinding" en los enlaces y eso es lo que le indica al servicio que utilice la seguridad de nivel de transporte HTTPS.En mi caso, el valor del atributo estaba vacío, lo que provocó que la solicitud del servicio web al archivo /js o /jsdebug a través de HTTPS fallara y arrojara un error 404.

<services>
      <service name="MyService">
        <endpoint address="" behaviorConfiguration="MyServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Services.MyService" />
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding">
          <security mode="Transport">
          </security>
        </binding>
      </webHttpBinding>
    </bindings>

Tenga en cuenta que el atributo vinculanteConfiguration debe estar vacío ("") si se accede al servicio a través de http en lugar de https (cuando se realiza la prueba en una máquina local sin certificados)

Espero que esto ayude a alguien.

Otros consejos

Si aún recibe el mismo error después de realizar todo el trabajo posible.Simplemente agregue un "Servicio WCF habilitado para AJAX".

Para mí el problema fue el siguiente;Agregamos MVC a una solución con enrutamiento.Nuestros servicios WCF no fueron ignorados.Resolví esto agregando la siguiente regla (donde "WCF" es la carpeta donde guardamos nuestros servicios).

routes.IgnoreRoute("WCF/{*pathInfo}");

Espero que eso le ahorre a alguien unas horas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top