none
WebService no funciona como se espera en Producción RRS feed

  • Pregunta

  • Muy buenos días,

    A ver si alguien me echa un cable en algo que me esta superando, ya he intentado muchas cosas y no doy con la solución

    Tengo un Sitio en ASP.NET 4.0 en una carpeta situada en la raíz agregé un WS (ws_sociales.asmx) con un web method que dado un string como argumento que paso por POST consulta la BD y devuelve un array de elementos en json el cual es capturado por un scrip ($.ajax) en un archivo aspx dentro de la misma carpeta 

    en desarrollo funciona perfecto, pero cuando subo la app a producción 

    failed to load resource: http://xxxx.com/publico/sociales/ws_sociales.asmx/GetAllCommentsByRef

    the server responded with a status of 500 (Internal Server Error)

    si doy click en el link obtengo este mensaje

    Server Error in '/' Application.
    
    Request format is unrecognized for URL unexpectedly ending in '/GetAllCommentsByRef'.
    
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: System.InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/GetAllCommentsByRef'.
    
    Source Error: 
    
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    
    Stack Trace: 
    
    
    [InvalidOperationException: Request format is unrecognized for URL unexpectedly ending in '/GetAllCommentsByRef'.]
       System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +489329
       System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) +212
       System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated) +48
       System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +346
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

    Me llama la atención que en desarrollo funciona correctamente y en producción pasa esto, si a alguien le ha ocurrido algo similar y quiere compartir su experiencia bienvenida sea

    Muchas cordialidades


    G. Poliovei


    miércoles, 10 de junio de 2015 15:16

Respuestas

  • Comprueba que en el web.config tienes habilitado el método HttpPost:

    <configuration>
        <system.web>
        <webServices>
            <protocols>
                <add name="HttpPost"/>
            </protocols>
        </webServices>
        </system.web>
    </configuration>

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:00
    miércoles, 10 de junio de 2015 15:24
  • ¿Y el error que te da ahora sigue siendo el mismo?

    ¿Todos los accesos al servicio los haces a través de Post?

    Por si acaso, aunque sólo sea para probar, puedes habilitar también el Get.

    <configuration>
        <system.web>
        <webServices>
            <protocols>
                <add name="HttpPost"/>
                <add name="HttpGet"/>
            </protocols>
        </webServices>
        </system.web>
    </configuration>

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:01
    miércoles, 10 de junio de 2015 15:53
  • en este codigo

    data: { refe : '<%: referencia %>' },
                       

    referencia tiene datos? Lo digo porque tal vez vengan vacios


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:01
    miércoles, 10 de junio de 2015 16:37
    Moderador
  • Hola, cómo realizas el POST a tu webservice? A través de JQuery? Puedes ponernos tu código?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:01
    miércoles, 10 de junio de 2015 15:54
    Moderador

Todas las respuestas

  • Comprueba que en el web.config tienes habilitado el método HttpPost:

    <configuration>
        <system.web>
        <webServices>
            <protocols>
                <add name="HttpPost"/>
            </protocols>
        </webServices>
        </system.web>
    </configuration>

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:00
    miércoles, 10 de junio de 2015 15:24
  • Gracias por tu tiempo, implementé esa linea pero seguimos en la misma situación

    G. Poliovei

    miércoles, 10 de junio de 2015 15:46
  • ¿Y el error que te da ahora sigue siendo el mismo?

    ¿Todos los accesos al servicio los haces a través de Post?

    Por si acaso, aunque sólo sea para probar, puedes habilitar también el Get.

    <configuration>
        <system.web>
        <webServices>
            <protocols>
                <add name="HttpPost"/>
                <add name="HttpGet"/>
            </protocols>
        </webServices>
        </system.web>
    </configuration>

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:01
    miércoles, 10 de junio de 2015 15:53
  • Hola, cómo realizas el POST a tu webservice? A través de JQuery? Puedes ponernos tu código?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:01
    miércoles, 10 de junio de 2015 15:54
    Moderador
  • Asegúrate tienes lo siguiente configurado en tu web.config. Lo marco en NEGRITA

    <httpHandlers>
     <remove verb="*" path="*.asmx"/>
     <add verb="GET,POST" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
     </httpHandlers>
     <httpModules>
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
     </httpModules>
     </system.web> 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 10 de junio de 2015 15:58
    Moderador
  • <script type="text/javascript"> $(document).ready(function () { function loadMessages() { var tableMessages = $('#tableMessages tbody'); tableMessages.empty(); $.ajax({ url: 'ws_sociales.asmx/GetAllCommentsByRef', data: { refe : '<%: referencia %>' }, dataType: 'json', method: 'POST', success: function (data) { $(data).each(function (index, Element) { tableMessages.append('<tr><td>' + Element.usuario + '</td><td>' + Element.Comentario + '</td></tr>'); }); }, error: function (err) { alert(err); } }); }

    loadMessages();

    $('#getMessages').click(loadMessages); }) </script>

    Seguro aquí esta la llamada, lo que desconcierta es que en desarrollo funciona muy bien

    G. Poliovei

    miércoles, 10 de junio de 2015 16:03
  • System.InvalidOperationException: Missing parameter: refe.
       at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
       at System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)
       at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
       at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
    Creo que estamos a punto de conseguirlo, este mensaje es mas alentador, muchas gracias muchachos, comentar que no tengo en mi web config 

    httpHandlers

    NI

    httpModules

    Creen necesario que deba agregarlos?


    G. Poliovei

    miércoles, 10 de junio de 2015 16:27
  • en este codigo

    data: { refe : '<%: referencia %>' },
                       

    referencia tiene datos? Lo digo porque tal vez vengan vacios


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta George Poliovei miércoles, 10 de junio de 2015 17:01
    miércoles, 10 de junio de 2015 16:37
    Moderador
  • Solucionado, no tengo palabras para expresar mi gratitud, he estado un poco alejado de ASP.NET y realmente estaba trabado en este punto,

    La solución por si a alguno le pasa es según lo recogido aquí 

    en el web.config agregue

    <webServices>
            <protocols>
                <add name="HttpPost"/>
                <add name="HttpGet"/>
            </protocols>
        </webServices>

    en la llamada cambié

    ....... method: 'get', ........

    Por alguna razón la llamada la acción la hace por get cuando en todo mi code lo dirijo por post

    Muchas gracias de nuevo y estamos en contacto

     


    G. Poliovei

    miércoles, 10 de junio de 2015 17:00