ASMX webservice pas de retour JSON, ne peuvent POSTER en utilisant l'application/x-www-form-urlencoded contentType

Je peux appeler mon webservice à l'aide de jQuery SI le contentType = "application/x-www-form-urlencoded; charset=utf-8"

Ce sera, cependant, de retour de xml: <string>[myjson]</string>

Si j'essaie de POSTER au service à l'aide de "application/json; charset=utf-8" je reçois une erreur 500 avec un vide StackTrace et ExceptionType. Mon webservice fonction n'est jamais touché donc je ne suis pas tout à fait sûr de savoir comment déboguer cette situation.

Mes méthodes et les classes sont décorées avec les attributs appropriés et sont configurés pour utiliser le JSON que leur type de réponse (comme le font mes wsdl et disco des fichiers). J'ai l'Ajax extensions installées et les entrées nécessaires dans le web.config.

C'est sur une batterie de serveurs SharePoint, mais je ne suis pas sûr que cela fait trop de différence. J'ai déployé le web.les modifications de configuration sur tous les WFE bien installé les extensions ajax. De nouveau le service fonctionne, il ne veut tout simplement pas accepter quoi que ce soit, mais le type de contenu par défaut.

Pas sûr de ce que je suis en manque, ici, les gars...

mon appel ajax:

$.ajax({
type: "POST",
url: "/_vti_bin/calendar.asmx/Test",
dataType: "json",
data: "{}",
contentType: "application/json; charset=UTF-8",
success: function(msg){
    alert(msg);
    },
error: function(xhr, msg){ alert(msg + '\n' + xhr.responseText); }
});

Ma classe webservice:

[WebService(Namespace = "http://namespace")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public class CalendarService : WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string Test()
    {
        return "Hello World";
    }
}
La même chose se passe sur ASP.NET MVC 1.0 lors de l'exécution d'une requête AJAX.

OriginalL'auteur Steve Ruiz | 2009-05-22