Bonjour,

je débute en WCF, j'ai crée un serveur (channelFactory) qui communique avec mon client.

il crée bien le channel mais lorsque j'appelle une méthode de mon serveur en lui passant une liste d'objet typé, soit il freeze... soit il arrive dans la méthode avec une liste VIDE!

Comprends pas...

J'espère vraiment une aide ici...

Merci d'avance,

Bien à vous.

Liste d'objet ci dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 
 
Imports System.Runtime.Serialization
 
Namespace [Object]
 
    '<DataContract(Name:="OradAction", [Namespace]:="http://bit.radiovision.be")> _
    <Serializable()> _
    <DataContract()> _
    <KnownType(GetType(OradParam))> _
    Public Class OradAction
 
        Private _scene As String
        Private _animation As String
        Private _trigger As Int32
        Private _params As List(Of OradParam)
 
        '<DataMember(Name:="Scene")> _
        <DataMember()> _
        Public Property Scene() As String
            Get
                Return Me._scene
            End Get
            Set(ByVal value As String)
                Me._scene = value
            End Set
        End Property
 
        '<DataMember(Name:="Animation")> _
        <DataMember()> _
        Public Property Animation() As String
            Get
                Return Me._animation
            End Get
            Set(ByVal value As String)
                Me._animation = value
            End Set
        End Property
 
        '<DataMember(Name:="Parameters")> _
        <DataMember()> _
        Public Property Parameters() As List(Of OradParam)
            Get
                Return Me._params
            End Get
            Set(ByVal value As List(Of OradParam))
                Me._params = value
            End Set
        End Property
 
        '<DataMember(Name:="Trigger")> _
        <DataMember()> _
        Public Property Trigger() As Int32
            Get
                Return Me._trigger
            End Get
            Set(ByVal value As Int32)
                Me._trigger = value
            End Set
        End Property
 
        Public Sub New(ByVal Scene As String, ByVal Animation As String, ByVal Trigger As Int32, ByVal Parameters As List(Of OradParam))
            Me._scene = Scene
            Me._animation = Animation
            Me._params = Parameters
            Me._trigger = Trigger
        End Sub
    End Class
 
End Namespace
 
 
Imports System.Runtime.Serialization
 
Namespace [Object]
 
    '<DataContract(Name:="OradParam", [Namespace]:="http://bit.radiovision.be")> _
    <Serializable()> _
    <DataContract()> _
    Public Class OradParam
 
        Private _name As String
        Private _value As String
        Private _type As Type
 
        '<DataMember(Name:="Name")> _
        <DataMember()> _
        Public Property Name() As String
            Get
                Return Me._name
            End Get
            Set(ByVal value As String)
                Me._name = value
            End Set
        End Property
 
        '<DataMember(Name:="Value")> _
        <DataMember()> _
        Public Property Value() As String
            Get
                Return Me._value
            End Get
            Set(ByVal value As String)
                Me._value = value
            End Set
        End Property
 
        '<DataMember(Name:="ParamType")> _
        <DataMember()> _
        Public Property ParamType() As Type
            Get
                Return Me._type
            End Get
            Set(ByVal value As Type)
                Me._type = value
            End Set
        End Property
 
        Public Sub New(ByVal Name As String, ByVal Value As String, ByVal ParamType As String)
            Me._name = Name
            Me._type = System.Type.GetType(ParamType, True, False)
            Me._value = Value
        End Sub
 
    End Class
 
End Namespace
Contrat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
    <ServiceContract(Namespace:="http://bit.radiovision.be/Contract/Orad.wcf")> _
    Public Interface IOrad
 
        <OperationContract()> _
        Sub DoProcess(ByVal aQList As List(Of OradAction))
 
        <OperationContract()> _
        Sub EventReceived(ByVal aDDOEventArgs As RVKernel.Object.DDOEventArgs)
 
    End Interface
Le serveur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<CallbackBehavior(ConcurrencyMode:=ConcurrencyMode.Reentrant, UseSynchronizationContext:=False)> _
Public Class MainForm
    Implements IOrad
    Implements IDataCallbackContext
 
...
le client :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Public Shared Function ConnectOradController() As IOrad
 
            Dim _dataContext As New RadioVisionDataContext
            Dim bind As New NetTcpBinding(SecurityMode.None, True)
            Dim epBuilder As New System.Text.StringBuilder
            Dim ep As EndpointAddress
            Dim _config As ISingleResult(Of bit_sp_GetOradControllerConfigResult) = _dataContext.bit_sp_GetOradControllerConfig
            Dim _configEnum As IEnumerable(Of bit_sp_GetOradControllerConfigResult) = _config.ToList
            Dim _iOrad As IOrad = Nothing
            epBuilder.Append("net.tcp://").Append(_configEnum(0).PARAM_1).Append(":").Append(_configEnum(0).PARAM_2).Append("/").Append(_configEnum(0).PARAM_3)
 
            ep = New EndpointAddress(epBuilder.ToString)
 
            Try
                _iOrad = ChannelFactory(Of IOrad).CreateChannel(bind, ep)
            Catch ex As Exception
                Return Nothing
            End Try
 
            Return _iOrad
 
        End Function