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 :
Contrat :
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
Le serveur :
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 client :
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 ...
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
Partager