Autor Beitrag
bizkit
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 17.02.14 11:54 
Hallo,

leider komme ich nicht auf die Idee wie ich folgendes Problem lösen kann.

Wie kann ich machen, dass Webservice Host (WCF) eine Methode hat, die eine LISTE(Arraylist) an deien WCF- Client übergigbt.
Ich habe sonst immer mit Strings und Int als Übergabeparameter geabreitet, aber mit Listen habe ich keine Idee wie ich das machen sollte.
Wäre über jeden Vorschlag dankbar


Moderiert von user profile iconChristian S.: Topic aus Basistechnologien verschoben am Mo 17.02.2014 um 11:02
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.02.14 12:01 
Wo ist denn genau das Problem? So lange die Liste serialisierbar ist und der entsprechende Elementtyp mittels DataContract markiert ist, sollte das so gehen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
[DataContract]
public class Element {
  [DataMember]
  public string Eigenschaft {get; set;}
}


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
[ServiceContract]
interface IService {
  [OperationContract]
  Element[] GetElements();
}


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public class Service : IService {
  public Element[] GetElements()
  {
    // ...
  }
}

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: bizkit
bizkit Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 17.02.14 13:27 
Danke,

ich komme mit den Datacontracts überhaupt nicht klar.

Ich möchste auf der Hostseite eine Liste z.B. mit zwei Werten an den Clinet übergeben.
Aber ich komme nicht weiter, weil ich das mit dem Datacontract nicht so ganz verstehe (habe mir schon die ganzen Tutorials angeschaut).
Kannst du mir evtl. einen kleinen Bsp. machen/zeigen?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.02.14 13:53 
Oben steht doch ein Beispiel. Was konkret funktioniert denn nicht bzw. was verstehst Du nicht? Hast Du Code, der nicht funktioniert, den man sich mal angucken kann?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: bizkit
bizkit Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 17.02.14 13:59 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
[ServiceContract]
    public interface IService1
    {
      
       [OperationContract]
       GUID1[] getGUID();
     }



[DataContract]
    public class GUID1
    {
        private string guid;
      
        [DataMember]
        public string guidId
        {
            set { this.guid = value; }
            get { return this.guid; }

        }

    }


DIE Methode in Service1.cs
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    public GUID1[] getGUID()
        {        
      GUID1[] guid = new GUID1[2];

      guid[0] = "Test";

    
        }


ab da komme ich nicht mehr weiter.

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.02.14 14:07 
Damit bist Du doch praktisch fertig :nixweiss:
Die Methode muss den Wert natürlich auch noch zurück liefern, aber sonst sehe ich kein Problem.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: bizkit
bizkit Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 17.02.14 15:12 
ja,
aber wie übergebe ich dem client die werte aus der liste?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 17.02.14 15:16 
In dem der Client getGUID() aufruft. Genauso wie bei den Methoden die einen String und/oder int zurückgeben von denen du sagst das hättest du hinbekommen.

Für diesen Beitrag haben gedankt: bizkit
bizkit Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 17.02.14 15:36 
bei mir kommt eine Fehlermeldung, wenn ich in dem Cleint es abfrage.
ausblenden C#-Quelltext
1:
2:
3:
Service1Client client = new Service1Client();

client.getGUID();

dann kommt die folgende Fehlermeldung:
Der Server konnte die Anforderung aufgrund eines internen Fehlers nicht verarbeiten. Wenn Sie weitere Informationen zum Fehler erhalten möchten, aktivieren Sie entweder IncludeExceptionDetailInFaults (über das ServiceBehaviorAttribute oder das <serviceDebug>-Konfigurationsverhalten) für den Client, um die Ausnahmeinformationen zurück an den Server zu senden, oder aktivieren Sie die Ablaufverfolgung gemäß der Microsoft .NET

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.02.14 16:46 
Dann tu doch, was in der Fehlermeldung steht, um mehr darüber zu erfahren, was da passiert. Einfach in der .config-Datei des Service die IncludeExceptionDetailInFaults-Eigenschaft auf true setzen (oder On, weiß ich nicht mehr ...), dann wird die Exception aus dem Service an den Client gesendet.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: bizkit