Comment démarrer un service wcf?
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:
Citation:
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.
Pour mieux étayer ma demande voici les outils que j'utilise :
-Visual Studio 2012 Professionnal
-Framework .Net 3.5
-VB.NET
Le code de mon contrat est le suivant:
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 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:
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:
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:
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!:?