2010-04-06 40 views
5

Interesante aquí. Tengo un proyecto ASP.NET 1.1 que contiene un servicio web. Estoy usando la funcionalidad AJAX de jQuery para llamar a algunos servicios del cliente. Así es como se ve mi código:jQuery AJAX y un servicio web ASP.NET funciona localmente, pero no de forma remota

$.ajax({ 
    type: "POST", 
    url: 'foo.asmx/functionName', 
    data: 'foo1=' + foo1 + '&foo2=' + foo2, 
    dataType: "xml", 
    success: function(xml) { 
     //do something with my xml data 
    }, 
    error: function(request, error){ 
     //handle my error 

    }  

}); 

Esto funciona muy bien cuando ejecuto el sitio desde mi IDE en localhost. Sin embargo, cuando despliego este sitio a cualquier otro servidor, recibo un error parsererror de jQuery. Parece que ni siquiera llama a mi servicio ya que solté un código para escribir un archivo de registro en el disco y no lo está haciendo allí.

Debería devolverse el mismo XML exacto desde mi servidor local y el servidor en el que implementé.

¿Alguna idea?

+0

¿Puedes verificar si tienes un error de javascript? – Aristos

+0

¿Qué tal la autenticación? ¿Cambiaste la autenticación para esa carpeta del servicio web? – Raja

+0

la llamada AJAX usa el mismo dominio que el sitio en el que se encuentra, ¿verdad? –

Respuesta

8

he encontrado la respuesta a esto. Después de algunas depuraciones con Firebug, noté que el servidor estaba volviendo a generar algún error HTML. Miré el registro de errores del lado del servidor y la excepción fue "No se reconoce el formato de solicitud".

Después de un poco de excavación alrededor descubrí que el siguiente cambio en el web.config corrige el error:

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

Ahora estoy un poco interesado en el hecho de que mi localhost no tiene esa red. entrada de configuración y funciona independientemente. Si alguien entiende eso un poco mejor, me gustaría saber por qué.

Gracias por todas las sugerencias.

+0

A posibilidades: el depurador IDE de Visual Studio utiliza un archivo machine.config nativo, que puede funcionar como un conjunto de configuraciones predeterminadas que web.config puede asumir cuando no puede encontrar ciertas configuraciones. Por lo tanto, las versiones local y alojada de machine.config pueden diferir. Además, esto podría depender de qué versión de IIS se esté utilizando localmente y en el servidor. En IIS6 y versiones inferiores, hay configuraciones que se pueden configurar en IIS que no se pueden establecer en web.config. Sin embargo, creo que web.config puede tener control total sobre cualquier configuración de IIS7. Por lo tanto, cualquier cosa inferior a IIS7 puede ser impredecible si se basa soley en web.config – BumbleB2na

0

¿Estás seguro de que foo.asmx te lleva a la ubicación correcta? ¿Cambiaste las estructuras de las carpetas?

+0

Es la ruta correcta. Sin cambios cuando se implementa. Incluso intenté codificar el camino para ver si esta era la causa, pero no los dados. Mismo error. – Alex

Cuestiones relacionadas