none
Problema con el "El servidor remoto devolvió un error: NotFound" RRS feed

  • Pregunta

  • Saludos a todos!

     

    Sé que me enlazarán a otras respuestas sobre este problema del "El servidor remoto devolvió un error: NotFound"  en el acceso a Datos con WCF y Silverlight, pero creanme que he leido absolutamente todo y el problema persiste, y ya me está volviendo loco ese problema. El caso es sumamente extraño, algunas veces ocurre y otras no, es como si en algunos casos se perdiera por algún motivo la comunicación entre Silverlight y los Web Services.

    Y algunas otras veces ocurre mucho mas extraño, el web service si se ejecuta y trae los datos, sin embargo se lanza el NotFOund como si hubiese ocurrido una excepción

    Soluciones que he intentado:

     

    1- Ampliar el Time Out en el web.config de los web services asi:

     

      <binding name="NewBinding0" closeTimeout="00:59:00" openTimeout="00:59:00"
       receiveTimeout="00:59:00" sendTimeout="00:59:00" maxBufferSize="6553600"
       maxBufferPoolSize="5242880" maxReceivedMessageSize="6553600">
       <security>
       <transport>
        <extendedProtectionPolicy policyEnforcement="Never" />
       </transport>
       </security>
      </binding>
    

    2- También leí en foros que era de gran ayuda habilitar el WCF tracing y crear un .svclog para observar el comportamiento de los llamados y ver que exepcion es la que està ocurriendo. Lo hice de mil maneras y jamás me escribió algo en el archivo .svclog. A continuación pongo las lineas que agregué en el web.config

     

      <system.diagnostics>
        <sources>
          <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
            <listeners>
              <add name="traceListener"
                type="System.Diagnostics.XmlWriterTraceListener"
                initializeData= "C:\Audisoft\Code\AudiSoftNet\Code\Log\Diagnostics.svclog" />
            </listeners>
          </source>
        </sources>
      </system.diagnostics>
    

    3- También he modificado esa misma configuración del time out en el .ClientConfig  del lado del cliente y tampoco funciona.

     

    Cualquier ayuda estaría muy agradecido.


    Aprendiendo .Net
    jueves, 9 de diciembre de 2010 19:37

Todas las respuestas

  • Hola Dacar.

    Si tienes activado el diagnostico y no escribe nada en el log, es por que no hay comunicacion con el servicio WCF, ya que se deberia guardar la peticion y respuesta en el log.

    ¿el servicio WCF esta en la misma aplicacion de IIS que la que suministra la pagina silverlight o no esta bajo el IIS?


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    viernes, 10 de diciembre de 2010 19:03
  • Hola David.

     

    Que pena la demora en responder. Está bajo el IIS, es un proyecto aparte!

     

    Saludos y gracias


    Aprendiendo .Net
    viernes, 10 de diciembre de 2010 19:51
  • Hola de nuevo Dacar.

    Bien, si esta bajo IIS estara con compatibilidad con aspnet de modo que sea la aplicacion quien mantenga el ciclo de vida del servicio WCF, de modo que lo primero es poner la URL del servicio web en un navegador, y te deberia de salir el servicio con una explicacion de como usarlo, en caso contrario, la URL no es buena.

    ¿Estas usando WCF por algun motivo especial?, ya que es posible que te de mejores resultados RIA services si es para trabajar con modelos (aunque no tiene nada que ver con el tema, solo es para que lo plantearas)

    Si al poner la URL te sale, el servicio funciona correctamente, de modo que puedes actualizar la referencia al servicio en silverlight y el log te deberia de salir, en caso de no salir nada en el log de traza, es por que no se llama al servicio correctamente, de modo que tendras que ver como estas instanciandolo y llamando al metodo correspondiente.

    (si quieres puedes poner el codigo de la llamada al servicio para echarle un vistazo y la configuracion del servicio del web.config)


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    viernes, 10 de diciembre de 2010 20:26
  • Hola David.

     

    Al poner la url del servicio web en el navegador directamente funciona perfectamente. 

    Sobre tu otra pregunta, nuestra aplicación ya es bien robusta y tiene ya mas de un año de desarrollo, por lo tanto pasarnos a RIA Services sería muy traumático.


    El web.config no tiene nada extraño, nada mas le agrego  esta seccion para habilitar el monitoreo:

     

     <system.diagnostics>
      <sources>
       <source name="System.ServiceModel"
         switchValue="Information, ActivityTracing"
         propagateActivity="true">
        <listeners>
         <add name="traceListener"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData= "C:\Audisoft\Code\AudiSoftNet\Code\Log\Diagnostics.svclog" />
        </listeners>
       </source>
      </sources>
     </system.diagnostics>
    

     

     

     

     


    Aprendiendo .Net
    viernes, 10 de diciembre de 2010 21:09
  • Hola Dacar.

    Sin poder hacer pruebas, resulta algo dificil, asi que te pongo algunas cosas que yo miraria.

    - Si dices que la url funciona, asegurate de que el binding del webconfig este correctamente establecido.

    - pon un punto de interrupcion en la llamada asincrona al servicio, y comprueba que el enlace sea el correcto y no se haya cambiado por error.

    - en caso de estar bien el enlace, crea una aplicacion de 0, agrega el servicio y haz una llamada, esto debe decirnos si lo que falla es el servicio o la aplicacion, ya que si funciona, es la aplicacion la que debe tener algun error de configuracion, en caso contrario, sabemos que es por culpa del servicio.

    - activa tambien la traza en el proyecto nuevo, a ver que ocurre.

     

    Prueba esto y ya me comentas como a ido.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    lunes, 13 de diciembre de 2010 18:44
  • Hola David.

     

    De nuevo mis disculpas por la tardanza y de ante mano gracias por tu colaboración,

     

    Cuando dices que esté bien configurado el Binding en el web.config , te refieres al web.config de los web services o el que se genera en el lado del cliente?

     

    Bueno si es en el de los web services, te cuento que no tengo nada del Binding configurado, luego de consultar muchas cosas en internet, le agregugué esta sección de codigo aumentandole el timeout, pero igual no sirvió de nada. Se siguió presentando el problema.  A continuación te muestro la sección de Binding que agregué.

     

    <system.serviceModel>
     <bindings>
      <basicHttpBinding>
      <binding name="Binding" closeTimeout="00:05:00" openTimeout="00:05:00"
       sendTimeout="00:05:00">
       <security>
       <transport>
        <extendedProtectionPolicy policyEnforcement="Never" />
       </transport>
       </security>
      </binding>
      </basicHttpBinding>
     </bindings>
     </system.serviceModel>

     

     

    Como ves? crees que me hace falta algo?

     

    Como podría checar en la llamada asíncrona que no se haya perdido el enlace al web service? yo ya he puesto el punto de debug alli pero no encuentro donde puedo ver la url del servicio al cual estoy invocando, podrias decirme?

     

    De nuevo muchas gracias


    Aprendiendo .Net
    martes, 14 de diciembre de 2010 16:26

  • Hola de nuevo David.

     

    Te cuento que me he acercado a la solución del problema, recuerdas la seccion del binding que me comentabas del web.config. Pues la modifiqué un poco aumentandole lso tiempos de timeout, y el problema se ha reducido... no del todo jeje pero ya el error sale muy poco. Ahora lo tengo asi, que me podrá estar faltando David?


     <system.serviceModel>
     <bindings>
      <basicHttpBinding>
      <binding name="Binding" closeTimeout="00:30:00" openTimeout="00:30:00"
       sendTimeout="00:03:00">
       <security>
       <transport>
        <extendedProtectionPolicy policyEnforcement="Never" />
       </transport>
       </security>
      </binding>
      </basicHttpBinding>
     </bindings>
     </system.serviceModel>

    miércoles, 15 de diciembre de 2010 19:27
  • Hola Dacar.

    he estado enfermo y no he podido responder antes.

    si no lo has solucionado, es posible que tengas un tamaño de datos excesivo.

    pon un punto de ruptura en el servicio wcf y mira que cantidad de datos va a retornar, si puedes filtralos para que retorne menos datos y verifica si con menos datos funciona correctamente.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    viernes, 31 de diciembre de 2010 9:19