Avatar billede SommerFyr Seniormester
11. maj 2023 - 13:43 Der er 17 kommentarer og
2 løsninger

Webservice

Hej jeg er ved at lave webservice hvor jeg skal modtage order men det volder mig lidt problemmer..

Min webs WebService

<WebMethod(Description:="Modtage order")>
    Public Function PostOrder(ByVal NewOrder As Debitor_Order) As String
        If Not IsNothing(NewOrder) Then
            Dim MyOrder As Debitor_Order = NewOrder
            Return "Done " & MyOrder.DebitorID & " " & MyOrder.Orderline.Count
        Else
            Return "No Order"
        End If
    End Function

Debitor_Order ser sådan ud

Public Class Debitor_Order
        Public Property DebitorID As Integer
        Public Property DebitorCreate As Date
        Public Property Orderline As New List(Of Debitor_Orderline)
    End Class

    Public Class Debitor_Orderline
        Public Property OrderlineNr As String
        Public Property OrderlineText As String
        Public Property OrderlinePrice As Decimal
        Public Property OrderlineCount As Long
    End Class

jeg kan ikke få lov at sende orderline commandon add findes ikke og jeg er usikker på hvad det så gør.

Mit kald

        Dim Neworder As New HostService.Debitor_Order
        Neworder.DebitorID = 1
        Neworder.DebitorCreate = Now.Date
        Me.Label3.Text = MyService.PostOrder(Neworder)
Avatar billede arne_v Ekspert
11. maj 2023 - 16:26 #1
Neworder.Orderline.Add(new Debitor_Orderline())

bør virke.

Hvad forsøger du og hvilken fejl får du?
Avatar billede SommerFyr Seniormester
11. maj 2023 - 17:02 #2
Hej Arne

Fedt du gider hjælpe..

Jeg ved ikke hvorfor men add command findes ikke i min client
Avatar billede SommerFyr Seniormester
11. maj 2023 - 18:13 #3
jeg har pakke det project og lagt til download
https://exp.zipmedia.dk/hostservice.rar

min ide var nemligt at jeg skulle kun lave en order og sende via min webservice men kan ikke få det til at virker.
Avatar billede SommerFyr Seniormester
11. maj 2023 - 18:59 #4
så er den online
Avatar billede arne_v Ekspert
11. maj 2023 - 19:16 #5
Jeg har kigget lidt.

Det er client side du har problemer.

Og client side bruger du ikke ovenstående klasser men nogle klasser som er genereret for client udfra server side.

Og det ser ud som om at den genererede Orderline  er et array og ikke en list.
Avatar billede arne_v Ekspert
11. maj 2023 - 19:20 #6
Neworder.Orderline = New Debitor_Orderline(1) { }
Neworder.Orderline(0) = New Debitor_Orderline()

hvis jeg husker VB.NET syntax korrekt.
Avatar billede SommerFyr Seniormester
11. maj 2023 - 20:03 #7
Jeg er ikke sikker på jeg forsår men jeg har upload en kopi af hele script som måske kan kase lys over hvor fejl er for jeg kan simple hen ikke finde den..
Avatar billede SommerFyr Seniormester
12. maj 2023 - 11:33 #8
Alt sammen skulle da gerne være list
Avatar billede arne_v Ekspert
12. maj 2023 - 19:28 #9
Du har lavet en HostService/Models/Debitor_Order.vb som indeholder en:

    Public Class Debitor_Order
        ...
        Public Property Orderline As New List(Of Debitor_Orderline)
    End Class

Det er en List. Så server side er all good.

Og du deployer din ASMX på server.

Så har du client side.

Der formoder jeg at du har lavet en web reference til din ASMX.

Det gør at VS genererer et client library til at kalde web service.

Desktop/Connected Services/HostService/Reference.vb

og den har:

    Partial Public Class Debitor_Order
        ...
        Private OrderlineField() As HostService.Debitor_Orderline
        ...
        Public Property Orderline() As HostService.Debitor_Orderline()
            Get
                Return Me.OrderlineField
            End Get
            Set
                If (Object.ReferenceEquals(Me.OrderlineField, value) <> true) Then
                    Me.OrderlineField = value
                    Me.RaisePropertyChanged("Orderline")
                End If
            End Set
        End Property
        ...
    End Class
Avatar billede arne_v Ekspert
12. maj 2023 - 19:29 #10
Nemmeste løsning er i client bare at bruge det array.

Alternativt skal finde ud af hvordan du får genereret en stub klasse med List fremfor array.
Avatar billede SommerFyr Seniormester
12. maj 2023 - 22:27 #12
Det er da rar at vide man ikke er den enste der ikke kan få det til at virker. !!
Avatar billede SommerFyr Seniormester
12. maj 2023 - 22:29 #13
Dog virker det som om de har problemmer med læs fra webservice jeg prøver at skrive til den eller er det mig der miss forsår !!!
Avatar billede arne_v Ekspert
13. maj 2023 - 01:28 #14
Problemet er det samme for argument og retur værdi.

Bare brug array client.
Avatar billede SommerFyr Seniormester
13. maj 2023 - 01:38 #15
hvordan mender du ?
Avatar billede arne_v Ekspert
13. maj 2023 - 02:04 #16
Du har koden:

        Dim Neworder As New HostService.Debitor_Order
        Neworder.DebitorID = 1
        Neworder.DebitorCreate = Now.Date

Vi ved nu at Neworder.Orderline er et array og ikke en List.

Saa noget lignende:

Neworder.Orderline = New Debitor_Orderline(1) { }
Neworder.Orderline(0) = New Debitor_Orderline()
Avatar billede SommerFyr Seniormester
25. maj 2023 - 21:59 #17
Hej Arne

Jeg ligger lige pt syg, men håber jeg får tid i weenden til at se på det og vender der efter tilbage..
Avatar billede SommerFyr Seniormester
30. maj 2023 - 11:51 #18
Hej Arne

så langt så godt jeg kan ikke få lov at sende data med har prøve sådan her..
Neworder.Orderline = New HostService.Debitor_Orderline(0) {}
Neworder.Orderline = New HostService.Debitor_Orderline(1) {}
Neworder.Orderline = New HostService.Debitor_Orderline(2) {}
Neworder.Orderline = New HostService.Debitor_Orderline(3) {}

jeg have en ide til at jeg skulle skrive dem inden i sådan her
Neworder.Orderline = New HostService.Debitor_Orderline(0) {.OrderlineNr="1001",.OrderlineText="test",.OrderlinePrice=100,.OrderlineCount=1}

men det vil den så heller ikke.. har du en ide til hvad jeg så skal gøre. ?
Avatar billede SommerFyr Seniormester
31. maj 2023 - 15:08 #19
så tro jeg at jeg fandt en løsning

        Dim NewOrderline As New List(Of HostService.Debitor_Orderline)
        NewOrderline.Add(New HostService.Debitor_Orderline With {.OrderlineNr = "1001", .OrderlineText = "test", .OrderlineCount = 1, .OrderlinePrice = CDec(99)})
        NewOrderline.Add(New HostService.Debitor_Orderline With {.OrderlineNr = "1003", .OrderlineText = "test", .OrderlineCount = 2, .OrderlinePrice = CDec(99)})
        Neworder.Orderline = NewOrderline.ToArray
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester