2010-05-01 15 views
8

acabo de actualizar una copia de prueba de mi sitio a asp.net 4.0 y he notado un problema extraño que solo surge cuando cargo el sitio en mi servidor.servicio web asmx que devuelve xml en lugar de json en .net 4.0

el sitio tiene un servicio web de asmx que devuelve json, pero cuando ejecuto el sitio en mi servidor, devuelve xml. funcionó bien en asp.net 3.5 durante más de un año.

WebMethod está decorado con los atributos correctos ...

[WebMethod][ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public List<LocationRecentChange> RecentChanges() 

y en mi máquina local devuelve JSON.

todavía en el servidor (Windows 2008 64bit) devuelve xml.

utilizando la consola Firebug verá una respuesta 200 OK y un montón de XML, y en mi máquina local los datos devueltos son los JSON que espero.

Aquí está el código JavaScript que llama al servicio ..

function loadRecentData() { 
$.ajax({ 
    type: "POST", 
    url: "service/spots.asmx/RecentChanges", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: loadRecentUpdates, 
    failure: function(msg) { 
     //alert(msg); 
    } 
}); 

}

Cualquier sugerencia bienvenida, esto me tiene perplejo!

Respuesta

7

¿Estás seguro de que .NET 4 está instalado en tu servidor?

del ScriptHandlerFactory cadena "tipo" en .NET 4 es:

System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 

ASP.NET 4 incluye ahora que en su defecto web.config a pie de máquina. Por lo tanto, no debería necesitar ninguna asignación a ScriptHandlerFactory en el web.config de su proyecto, 3.5 o 4.

+0

Resulta que el servidor tiene algo moderno con IIS. No puedo volver a crear el problema localmente, pero al insertar el elemento en web.config lo soluciono. – Baldy

+3

Tengo exactamente el mismo problema.¿Puedes editar la respuesta para incluir el código exacto que necesito agregar a mi web.config (incluida la sección a la que debe agregarse)? Gracias. – njr101

2

así logré localizarlo mediante la lectura de arriba sobre los servicios web ajax solicitudes se manejan aquí ...

http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/ajax/tutorial-05-cs.aspx

básicamente un manejador de ASP.NET 3.5 se debe declarar en su web. la sección de controladores de configuración en system.webserver para que pueda devolver una respuesta JSON en lugar de la predeterminada.

aquí es lo que hay que añadir a la web.config handlers section (también añadir a httpHandlers sección si usted necesita para apoyar IIS6) ...

<handlers> 
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

tengo mis sospechas de que esto tendrá que reemplazar con una versión .net 4.0 del mismo controlador, pero por ahora, funciona.

+1

Estoy teniendo exactamente el mismo problema. ¿Puedes editar la respuesta para incluir la sección de incluir a qué necesita agregarse? Y cualquier elemento adicional como si es necesario. Gracias. – njr101

+0

lo hemos actualizado y hemos agregado enlaces a la documentación pertinente de la sección – Baldy

+0

Pero no ha dicho dónde agregar la sección ... ¿A dónde va eso? Donde sea que lo ponga, me sale un error. – NickG

Cuestiones relacionadas