[WCF] Foutmelding bij enums?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 10-07 08:35
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


Acties:
  • 0 Henk 'm!

Anoniem: 34209

zet eens [EnumMember] bij je enum
dus

[EnumMember]
Offline
[EnumMember]
,Online;

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


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 07-07 14:42
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?

Acties:
  • 0 Henk 'm!

  • stoofpeer
  • Registratie: Augustus 2010
  • Laatst online: 09-07 06:30
EnumMember

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