Benutzer mit den meisten Antworten
Kein JSON response, XML ?

Frage
-
Guten Morgen zusammen
Ich benutze einen Webservice um in einer Javascript Methode eine GUID zu erhalten.
Die Methode ist einfach gestrickt :
Imports System.Web.Services Imports System.ComponentModel Imports Ext.Net <System.Web.Script.Services.ScriptService()> _ <System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ <System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ <ToolboxItem(False)> _ Public Class GUIDProvider Inherits System.Web.Services.WebService <WebMethod()> Public Function GetGUID() As String Dim newGuidContainer As New GUIDContainer() newGuidContainer.Id = Guid.NewGuid() Return JSON.Serialize(newGuidContainer) End Function End Class <Serializable()> Public Class GUIDContainer Public Property Id As Guid End Class
Auf meinem Entwicklungs PC ist der Response sauber so, wie ich es erwarte :
{"d":"{\"Id\":\"5588c244-a7a9-43b7-b256-81c49f966f34\"}"}
Anders sieht es auf unserem Test Server aus :
<?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/">{"Id":"8654d1e0-d4ae-41aa-b2de-56c8a4cf34af"}</string>
Was ist hier nur falsch ? Leider habe ich keinen direkten Zugriff auf den Testserver, der wird von einer anderen Abteilung gepflegt.
Gruss und danke für Eure hilfe
PeterMittwoch, 24. Juli 2013 09:58
Antworten
-
Hallo Peter,
WebMethod geht eigentlich zu einem XML Webservices. Für eine REST Service, der XML als auch JSON können soll, sind die WebGet / WebInvoke Methoden meines Erachtens besser geeignet. Bei denen kannst Du über die Meta-Daten auch festlegen, das JSON geliefert werden soll:
<WebGet(RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json)> _ Public Function GetGUID() As String Dim newGuidContainer As New GUIDContainer() newGuidContainer.Id = Guid.NewGuid() Return newGuidContainer.Id.ToString() End Function
Olaf Helper
Blog Xing- Als Antwort markiert Peter A. Treier Montag, 29. Juli 2013 08:15
Freitag, 26. Juli 2013 12:30
Alle Antworten
-
Hallo Peter,
zeig doch mal bitte den JavaScript Code, mit dem Du den Webservice aufrufst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET CommunityMittwoch, 24. Juli 2013 10:20 -
Mein Aufruf läuft über diese Methode :
var result = GetSynchronousJSONResponse('../controls/GUIDProvider/GUIDProvider.asmx/GetGUID', null); var guid = JSON.parse(JSON.parse(result).d).Id;
// Helper Function for Synchronous Ajax Call function GetSynchronousJSONResponse(url, postData) { var request = null; var versions = new Array("MSXML2.XMLHttp", "Microsoft.XMLHttp", "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0"); if (document.getElementById) { if (window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if (window.ActiveXObject) { for (var i = 0; i < versions.length; i++) { try { request = new ActiveXObject(versions[i]); } catch (exception) { throw new Error(503, 'AJAX Communication is not avaliable for this Request !'); } } } } // to be ensure non-cached version of response var randomNumber = Math.random(); url = url + "?rnd=" + randomNumber; request.open("POST", url, false);//false means synchronous request.setRequestHeader("Content-Type", "application/json; charset=utf-8"); request.send(postData); var responseText = request.responseText; request = null; return responseText; };
Mittwoch, 24. Juli 2013 10:40 -
Hi Björn
Denke nicht, dass der Serializer das Problem ist. Ich habe langsam den Verdacht, dass ich eher in der IIS Installation auf unserem Testserver zu suchen habe - wenn ich denn mal Zugang bekomme :-(
Danke aber trotzdem für den Tipp. Ein Custom ActionResult ist auch eine feine Sache. Die Formatierungsmöglichkeiten sind schon mal sehr gut !
Gruss
Peter
Mittwoch, 24. Juli 2013 12:35 -
Hallo Peter,
WebMethod geht eigentlich zu einem XML Webservices. Für eine REST Service, der XML als auch JSON können soll, sind die WebGet / WebInvoke Methoden meines Erachtens besser geeignet. Bei denen kannst Du über die Meta-Daten auch festlegen, das JSON geliefert werden soll:
<WebGet(RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json)> _ Public Function GetGUID() As String Dim newGuidContainer As New GUIDContainer() newGuidContainer.Id = Guid.NewGuid() Return newGuidContainer.Id.ToString() End Function
Olaf Helper
Blog Xing- Als Antwort markiert Peter A. Treier Montag, 29. Juli 2013 08:15
Freitag, 26. Juli 2013 12:30