• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

JSON WebService liefert IDs anstatt der Tabellen-Werte

PranKe01

New member
Hi,

ich habe meinen .Net WebService JSON-Kompatibel gemacht. Hierfür habe ich [ScriptService()] hinzugefügt. Wenn ich beim Request als Content-type application/json angebe, bekomme ich jetzt auch anstatt SOAP das gewollte JSON zurück.
Nun habe ich z.B. eine Tabelle "Rechte", in denen Benutzerrechte gespeichert werden:
ID / Recht
Code:
1 Admin
2 User
3 Gast
Bei Komplexen Datentypen (z.B. Benutzer), werden die Rechte anhand dieser IDs gespeichert. Also z.B. so:
ID / Name / Rechte
Code:
1 Jack 1
2 Miri 2
3 Mike 2

Während ich bei SOAP etwa so etwas bekomme:
Code:
<ID>3</ID>
<Name>Mike</Name>
<Rechte>User</Rechte>

bekomme ich bei JSON folgendes zurück
Code:
{
  d: {
    __type: Benutzer,
    ID: 3,
    Name: "Mike",
    Rechte: 2
  }
}

Hier wird also scheinbar direkt der gespeicherte Wert zurückgegeben, anstatt diesen Wert (die ID) aufzulösen und den gewollten Wert ("User") zurückzuliefern.

Ist dieses Verhalten normal und kann man es irgendwie ändern? Oder liegt es an meiner Implementierung? Bei Bedarf kann ich auch etwas Code aus dem WebService posten...

Vielen Dank für Eure Hilfe!
 
Ist dieses Verhalten normal und kann man es irgendwie ändern? Oder liegt es an meiner Implementierung? Bei Bedarf kann ich auch etwas Code aus dem WebService posten...

Vielen Dank für Eure Hilfe!
Ich habe jetzt gar keine Ahnung von .NET, aber ich denke mal, dass das an deiner Implementierung liegt - aber Code könnte da ev. weiterhelfen.
 
Also hier ein bisschen Code aus der webservice.asmx.cs:
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
using System.Web.Script.Serialization;
using System.IO;

using ...;

namespace WebServices.v1_00{
	[WebService(Namespace = "https://mypage.com/WebService")]
	[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService()]
	public class WebService : WebService{
        [WebMethod(EnableSession = true)]
        public Benutzer Login(string anmeldename, string kennwort){
            UnitTestWebService ws = new UnitTestWebService();
            return ws.Login(anmeldename, kennwort);
        }
	}
}

Evtl. hilft das ein wenig...
 
Zurück
Oben