Der ASMX-Webservice gibt JSON nicht zurück und kann nur POST mit der Anwendung / x-www-form-urlencoded contentType verwenden

8

Ich kann meinen Webservice mit jQuery aufrufen, wenn der contentType="application / x-www-form-urlencoded; charset = utf-8"

ist

Dies wird jedoch die xml: <string>[myjson]</string>

zurückgeben

Wenn ich versuche, mit "application / json; charset = utf-8" an den Dienst zu senden, erhalte ich einen Fehler von 500 mit einem leeren StackTrace und ExceptionType. Meine Webservice-Funktion wird nie getroffen, daher weiß ich nicht genau, wie ich diese Situation debuggen soll.

Meine Methoden und Klassen sind mit den entsprechenden Attributen versehen und so eingestellt, dass JSON als Antworttyp verwendet wird (wie auch meine WSDL- und DISCO-Dateien). Ich habe die Ajax-Erweiterungen installiert und die erforderlichen Einträge in web.config.

Dies ist in einer SharePoint-Farm, aber ich bin mir nicht sicher, ob das zu viel Unterschied macht. Ich habe die web.config-Änderungen auf allen WFEs installiert sowie die Ajax-Erweiterungen installiert. Erneut funktioniert der Dienst, er akzeptiert nur den Standard-Inhaltstyp.

Nicht sicher, was ich hier vermisse, Jungs ...

mein Ajax-Anruf:

%Vor%

Meine Webservice-Klasse:

%Vor%     
Steve Ruiz 22.05.2009, 22:17
quelle

7 Antworten

3

Ich habe dies in 2.0 mit Web-Services funktioniert, aber ich habe Schutz vor der .d (siehe dataFilter unten). Ich gebe auch eine Reihe von Objekten zurück. HINWEIS: Die Klasse für das Objekt ist statisch oder würde zumindest für mich nicht korrekt funktionieren.

%Vor%

Hier ist ein Ausschnitt meines Web-Service:

...

%Vor%

...

der Objektcode:

%Vor%     
Mark Schultheiss 29.09.2009 19:44
quelle
1

Ich habe mich heute mit einer iPhone-App im Gespräch mit einem .Net-Webdienst herumgeschlagen.

Ich habe festgestellt, dass, wenn ich meinen Inhaltstyp in application / jsonrequest änderte, es ohne Probleme lief und ich die Daten in meinem Webserver verarbeiten konnte.

Nur für grins habe ich die oben erwähnte Zeile zu meiner web.config hinzugefügt, aber es hat keine Anwendung / json funktioniert.

    
Steve Reed Sr 29.07.2010 00:36
quelle
0

nicht sicher, ob es so einfach sein könnte, aber ich benutze jQuery, um JSON von meinen Webmethoden zurückzurufen.

Der Hauptunterschied, den ich sehe, ist das Attribut der Klasse

  

[System.Web.Script.Services.ScriptService]

%Vor%

Ich muss davon ausgehen, dass Sie das 3.5-Framework verwenden, da dies die einzige Möglichkeit ist, JSON-Webmethoden verfügbar zu machen.

Meine Aufrufe von jQuery sehen praktisch identisch aus, also kein Problem.

    
Bobby Borszich 23.05.2009 06:04
quelle
0

Wenn Sie dies in IE zu test, versuchen Sie die charset Erklärung von Ihrem content Attribute zu entfernen (das heißt es soll wie folgt aussehen:

%Vor%

Ich habe noch, warum zu entdecken, aber IE scheint seine Knickerbocker in einer Torsion zu erhalten, wenn zu machen JSON mit dem „ charset=UTF-8 “ Teil nennen.

    
Phil.Wheeler 29.05.2009 09:55
quelle
0

Ich glaube, Sie suchen die WebInvoke oder WebGet Attribut, es lässt Sie Uri Vorlage, Body-Style, Anfrage und responseformats angeben, zum Beispiel:

%Vor%

Diese Verbindung helfen können. Es gibt einen ähnlichen Artikel für WebInvoke (meistens für Postsendungen verwendet).

    
marr75 11.06.2009 18:04
quelle
0

Ich benutze JQuery AJAX JSON Aufrufe an ASMX Webservice ziemlich viel. Es funktioniert perfekt in allen Browsern. Ich verwende .NET 2.0 mit den installierten ASP.NET AJAX Extensions (gebündelt in 3.5).

Meine Klasse hat die gleichen Dekorateure wie Sie. Meine Methoden haben nur den [WebMethod(EnableSession = true)] Decorator. Meine web.config hat jedoch den folgenden Eintrag in seinem httpHandlers-Abschnitt:

%Vor%

Mein jquery-Aufruf sieht folgendermaßen aus:

%Vor%

Dieser Artikel ist die Wurzel von mein Wissen.

    
Mr Grieves 17.06.2009 14:09
quelle
-1

Sieht so aus, als müssten Sie json als Antwortformat im scriptMethod-Tag angeben. Dies ist von vb.net, aber ich bin sicher, Sie haben die Idee:

ResponseFormat: = ResponseFormat.Json

    
ScottE 25.05.2009 18:28
quelle