Toon posts:

[WCF] Foutmelding bij enums?

Pagina: 1
Acties:

  • ThaStealth
  • Registratie: oktober 2004
  • Laatst online: 19-09 09:55
Ik ben bezig om een WCF service te ontwerpen en tegelijkertijd een client te implementeren die gebruik van de service maakt.

Bij 1 van de operations is het de bedoeling dat er een overgeerft object word teruggegeven waarin diverse objecten en enumeraties in verwerkt zitten:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[DataContract] 
public class Device
{
   private int _id;

   [DataMember] 
   public int ID
  {
       get { return _id; }
       set { _id = value; }
  }
}

[DataContract] 
public enum DeviceStatus
{
    Offline,Online;
}

[DataContract] 
public class DeviceExtended  : Device
{
      private DeviceStatus status;

       [DataMember] 
      public DeviceStatus Status
      {
             get { return status;} 
             set { status = value; }
       }

       public void DoSomething()
       {
  
       }
}


De methodeaanroep ziet er als volgt uit:
C#:
1
2
[OperationContract]
public Device[] GetDevices();


Wanneer ik de enumeratie in de code plaats gaat het mis bij de aanroep van de functie, aan de client kant krijg ik de volgende exceptie:

System.Exception: An error occurred while receiving the HTTP response to http://localhost:8080/MijnService This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details..

Aan de client kant maakt de Visual Studio er een string van (ipv de enum zelf)

Ik heb geen flauw idee waar het aan ligt, Alleen als ik de enumeratie weghaal uit de code werkt de aanroep, anders krijg ik deze exceptie.

Een tweede vraag is, de functie "DoSomething()" krijg ik niet te zien aan de clientkant (omdat deze onderdeel is van het datacontract en hij geen attribute heeft. Is het moglijk om deze methode toch aan de client kant uitvoerbaar te maken?

Mess with the best, die like the rest


  • RxB
  • Registratie: september 2001
  • Laatst online: 07-02-2017
zet eens [EnumMember] bij je enum
dus

[EnumMember]
Offline
[EnumMember]
,Online;

[Voor 46% gewijzigd door RxB op 24-09-2010 22:13]


  • Deathraven
  • Registratie: november 2001
  • Laatst online: 14-09 19:19
En als antwoord op je tweede vraag: Nee dat kan niet.
Je stuurt immers data over de lijn, geen compileerbare code. Waarom zou je DoSomething op je data entiteit willen hebben. Als het iets is wat logica op de het entiteit voorstelt, waarom neem je het niet op in je service contract dan?

  • stoofpeer
  • Registratie: augustus 2010
  • Laatst online: 21:01
EnumMember

Kijk deze link even voor enumerations in data contracts ;).


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee