tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
465
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    StehtimSchilf StehtimSchilf ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    117
    Hi Forum

    Ich möchte, dass mein Webservice ein Objekt einer selbstgeschriebenen Klasse übernimmt:

    Code :
    1
    2
    3
    4
    
        <WebMethod(Description:="<b>returns info about your account</b>")> _
        Public Function getAccountInfo(ByVal customer As Customer) As GatewayResults
            Return CustomerManager.getAccountInfo(customer)
        End Function


    Code :
    1
    2
    3
    4
    5
    
    Public Class Customer
       Private AccountID As Int32 = 0
       Private Username As String = ""
       Private MonthlyBill As Boolean = False
    End Class

    Bitte keine Hinweise, dass dies nonsense sein könnte. Ich habe im Client einen Web-Reference eingefügt und kann auf Clientseite auch schön ein Objekt "Customer" erstellen, doch wenn ich den WebService aufrufe, erhalte ich auf der Serverseite immer ein leeres Objekt.

    Ich habe bereits mit
    - Serializable() und SoapElement, XmlElement
    - XMLRoot und XMLElement
    herumgebastelt, aber irgendwie habe ich das ned zum Fliegen gebracht.

    Kann mir jemand obiges Beispiel komplettieren?

    Und dann noch dies:
    Code :
    1
    2
    3
    4
    
        <WebMethod(Description:="<b>returns info about your account</b>")> _
        Public Function setRelation(ByVal customer As Customer, ByVal hallo As Hallo) As GatewayResults
            Return CustomerManager.setRelation(customer, hallo)
        End Function
    Wie würde sowas gehen, wenn ich zwei eigene Objekte übergeben möchte?

    cheerioh & 1000 Dank
    SiS
     

  2. #2
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Die Attribute DataContract und DataMember wedem dir dabei helfen:

    http://msdn.microsoft.com/en-us/library/aa347792.aspx
     
    http://dirkgoldecker.spaces.live.com

    . Microsoft Certified Technology Specialist
    . Microsoft Certified Professional Developer
    |-> Web Applications

  3. #3
    StehtimSchilf StehtimSchilf ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    117
    Hi M4st3r

    Danke für Deine prompte Antwort. Ich weiss jetz ehrlich gesagt nicht genau wie mir dies helfen soll? Mein Problem ist doch, dass eben das Objekt beim Server leer ist. Obwohl ich auf der Clientseite:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Dim webservice As CustomerWebServiceRef.WebService = New CustomerWebServiceRef.WebService()
     
    Dim customer As CustomerWebServiceRef.Customer = New CustomerWebServiceRef.Customer()
    customer.AccountID = 1
    customer.Username = "Homer"
    customer.MonthlyBill = false
     
    MessageBox.Show(webService.getAccountInf(customer)

    Explizit dem Objekt Werte setze, sind die Properties in der webmethod getAccounInfo() bereits leer (resp. auf default). Ich will ja keine leeren Werte übergeben? Sorry, ich hab heute Montag

    Anmerkung: In der Klasse Customer sind die Properties natürlich public!

    Danke Dir!
     

  4. #4
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    ...und die Attribute gesetzt?

    Die WCF-Maschinerie serialisiert dir die Klasse nur wenn die Attribute vorhanden sind!
     
    http://dirkgoldecker.spaces.live.com

    . Microsoft Certified Technology Specialist
    . Microsoft Certified Professional Developer
    |-> Web Applications

  5. #5
    StehtimSchilf StehtimSchilf ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    117
    <EDIT>
    heee funktioniert nun doch auf einmal (vielleicht habe doch die Web-Referenz nicht aktualisiert!) Ich muss noch ausprobieren, warum ich eine bestehende Klasse nicht mit diesen Attributen ausstatten kann... melde mich nochmals.....
    </EDIT>


    Jiu:

    Code :
    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
    37
    38
    
    Imports Microsoft.VisualBasic
    Imports System.Runtime.Serialization
     
    <DataContract()> _
    Public Class Customer
     
        Private intAccountID As Int32 = 0
        Private strUsername As String = ""
        Private blnMonthlyBill As Boolean = False
     
        <DataMember()> _
        Public Property AccountID() As Int32
            Get
                Return Me.intAccountID
            End Get
            Set(ByVal value As Int32)
                Me.intAccountID = value
            End Set
        End Property
        <DataMember()> _
        Public Property Username() As String
            Get
                Return Me.strUsername
            End Get
            Set(ByVal value As String)
                Me.strUsername = value
            End Set
        End Property
        <DataMember()> _
        Public Property MonthlyBill() As Boolean
            Get
                Return Me.blnMonthlyBill
            End Get
            Set(ByVal value As Boolean)
                Me.blnMonthlyBill = value
            End Set
        End Property
    End Class

    Zudem: Das setzt .NET 3.0 voraus, nicht? Jedenfalls läuft es mit dieser Erweiterung auf dem Live-System nicht (The file XXXXXX has not been pre-compiled, and cannot be requested.), da dort nur .NET 2.0 installiert ist.

    Es kann doch nicht so schwierig sein, ein Objekt dieser Klasse meinem WebService zu übergeben? Und ja, ich habe natürlich den Web Service Referenz beim Client aktualisiert!

    Nochmals Danke!
    Geändert von StehtimSchilf (01.07.09 um 10:38 Uhr)
     

  6. #6
    StehtimSchilf StehtimSchilf ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    117
    Oh Mann

    Ich habe bei allen Properties die Klausel Set vergessen!

    Set (ByVal value As String)
    Me.strUsername = value '<--- das ist wichtig!
    End Set

    gangnagnangngnga! Schön ist heute Montag Und nun klappts sogar ohne DataContract!

    Ich danke Dir für Deine Beihilfe!

    cheeroh & Gruess
    SiS
     

Ähnliche Themen

  1. JBoss Webservice + EAR mit Parameter starten
    Von devilmc im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 06.10.10, 16:57
  2. [C++] Impliziter Konvertierungsoperator von int zu eigener Klasse
    Von Jellysheep im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 09.08.10, 17:54
  3. Antworten: 15
    Letzter Beitrag: 10.06.10, 17:48
  4. settimeout in eigener klasse auf eine Methode der Klasse
    Von user2580 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.04.09, 16:26
  5. Probleme mit eigener Klasse
    Von Rene42 im Forum .NET Café
    Antworten: 3
    Letzter Beitrag: 16.02.07, 09:25