bjr,
j'ai créer une bibliothèque de service WCF dans laquelle j'ai créé un contrat. Dans cette même solution j'ai créé une autre biblio de services WCF contenant le service, puis un hôte et enfin un consomateur pour mon service.
l'hote et le consommateur sont des projet winform.
malheureusement je n'arrive pas à démarrer mon service et voici le texte affiché par la boite de dialogue lorsque je démarre ma solution:
Pour mieux étayer ma demande voici les outils que j'utilise :Hôte de Service WCF de Microsoft
L'assembly cible ne contient aucun type de service.
Vous devrez peut-être ajuster la politique de sécurité d'accès du Code de cette Assemblée.
-Visual Studio 2012 Professionnal
-Framework .Net 3.5
-VB.NET
Le code de mon contrat est le suivant:
Code VB.Net : 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 ' Imports System.ServiceModel <ServiceContract()> _ Public Interface IServiceDev3 <OperationContract()> _ Function GetData(ByVal value As Integer) As String <OperationContract()> _ Function GetDataUsingDataContract(ByVal composite As CompositeType) As CompositeType ' TODO: ajoutez vos opérations de service ici <OperationContract()> _ Function EuroToUsDollars(ByVal amount As Decimal) As Decimal <OperationContract()> _ Function UsDollarsToEuros(ByVal amount As Decimal) As Decimal End Interface ' Utilisez un contrat de données (comme illustré dans l'exemple ci-dessous) pour ajouter des types composites aux opérations de service. <DataContract()> _ Public Class CompositeType Private boolValueField As Boolean Private stringValueField As String <DataMember()> _ Public Property BoolValue() As Boolean Get Return Me.boolValueField End Get Set(ByVal value As Boolean) Me.boolValueField = value End Set End Property <DataMember()> _ Public Property StringValue() As String Get Return Me.stringValueField End Get Set(ByVal value As String) Me.stringValueField = value End Set End Property End Class
Le code de mon service est le suivant:
Code VB.Net : 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 ' REMARQUE*: vous pouvez utiliser la commande Renommer du menu contextuel pour changer le nom de classe "Service1" à la fois dans le code et le fichier de configuration. Option Explicit On Option Strict On Imports Contrat3 Public Class CurrencyService3 Implements Contrat3.IServiceDev3 Public Function EuroToUsDollars1(amount As Decimal) As Decimal Implements IServiceDev3.EuroToUsDollars Return amount * CDec(1.3812) End Function Public Function UsDollarsToEuros1(amount As Decimal) As Decimal Implements IServiceDev3.UsDollarsToEuros Return amount * CDec(0.724) End Function Public Function GetData(ByVal value As Integer) As String Implements IServiceDev3.GetData Return String.Format("You entered: {0}", value) End Function Public Function GetDataUsingDataContract(ByVal composite As Contrat3.CompositeType) As Contrat3.CompositeType Implements IServiceDev3.GetDataUsingDataContract If composite Is Nothing Then Throw New ArgumentNullException("composite") End If If composite.BoolValue Then composite.StringValue &= "Suffix" End If Return composite End Function End Class
Le fichier de configuration de mon hote contient les lignes suivantes:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="Service3.CurrencyService3"> <endpoint address="http://localhost:8018/CurrencyService3" binding="basicHttpBinding" contract="Contrat3.IServiceDev3" /> </service> </services> </system.serviceModel> </configuration>
Et le fichier de configuration de mon client contient :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <client> <endpoint address="http://localhost:8018/CurrencyService3" binding="basicHttpBinding" contract="Contrat3.IServiceDev3" name="ConfigurationHttpCurrency" /> </client> </system.serviceModel> </configuration>
----Pour l'instant j'ai vérifié et revérifié les reférences entre les différents projets de la solution et tout me semble normal: le service reférence le contrat, l'hôte reférence le contrat et le service, le client reférence le contrat.
j'ai même recherché l'option WCF pour cocher le "Start WCF host when debugging..." mais je ne l'ai pas trouvé.
Merci d'avance pour votre aide! ca fait plus d'une semaine que j'essaie de percer le mystère de WCF!
Partager