2010-06-13 9 views
2

Je cherche à compiler/exécuter un exemple l'application WCF de Juval site de Lowy (auteur de la programmation WCF services & fondateur de IDesign). L'application est un exemple d'application de "publication de trafic" de publication/abonnement qui nécessite l'utilisation de VS 2010/.Net 4. C'est ma première tentative d'utiliser autre chose que VS 2008/Net 3.5.erreurs WCF dans VS 2010/.Net 4 à l'aide de l'échantillon publication/abonnement application à partir du site IDesign

Dans un premier temps j'ai reçu l'erreur de liaison suivante:

"Configuration binding extension 'system.serviceModel/bindings/ netOnewayRelayBinding' could not be found."

Cette erreur semble être résolu en modifiant le .Net 4 fichier machine.config, incorporer les références suivantes du .Net 2 fichier machine.config .

<xml> 
<bindingElementExtensions> 
<add name="tcpRelayTransport" type="Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="httpRelayTransport" type="Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="httpsRelayTransport" type="Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="onewayRelayTransport" type="Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="webMessageEncoding" type="System.ServiceModel.Configuration.WebMessageEncodingElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
<add name="context" type="System.ServiceModel.Configuration.ContextBindingElementExtensionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
<add name="byteStreamMessageEncoding" type="System.ServiceModel.Configuration.ByteStreamMessageEncodingElement, System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
<add name="discoveryClient" type="System.ServiceModel.Discovery.Configuration.DiscoveryClientElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
</bindingElementExtensions> 
<bindingExtensions> 
<add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
<add name="basicHttpContextBinding" type="System.ServiceModel.Configuration.BasicHttpContextBindingCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
<add name="basicHttpRelayBinding" type="Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="webHttpRelayBinding" type="Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="ws2007HttpRelayBinding" type="Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="netTcpRelayBinding" type="Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="netOnewayRelayBinding" type="Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
<add name="netEventRelayBinding" type="Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
<add name="wsHttpContextBinding" type="System.ServiceModel.Configuration.WSHttpContextBindingCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
<add name="netTcpContextBinding" type="System.ServiceModel.Configuration.NetTcpContextBindingCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
</bindingExtensions> 

Malheureusement en cours d'exécution les résultats de l'application dans l'erreur de sécurité suivant:

An error occurred creating the configuration section handler for system.serviceModel/client: That assembly does not allow partially trusted callers.
(\TrafficLights\TrafficController\bin\Debug\TrafficController.vshost.exe.Config line 4)

Le code source de l'échantillon est disponible en téléchargement sur le lien suivant: http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=-1&tabid=19&download=226

Je sais que Le code de Juval n'est pas en cause ici et ça doit être quelque chose que je fais mal avec ma configuration VS 2010. Je n'ai pas réussi à trouver une solution en ligne. Est-ce que quelqu'un pourrait me diriger dans la bonne direction quant à la meilleure façon de régler ce problème?

Répondre

1

Vous savez que le netOnewayRelayBinding est une liaison liée à Windows Azure, n'est-ce pas? Pour l'utiliser, vous devez utiliser une infrastructure Azure ServiceBus et vous avez besoin d'un compte sur Windows Azure pour cela. Il suffit de vérifier ....

D'une part, vous avez probablement besoin de la mise à jour Windows Azure Tools for Visual Studio 1.2 afin de faire ce travail avec VS 2010.

+0

Marc - Ce ne serait pas - je ne savais pas que je avais besoin d'un compte sur Windows Azure (dit quelque peu embarrassé). Comme je l'ai mentionné dans mon e-mail, c'était ma première incursion dans VS 2010 et la WCF ne semblait pas si «significative» dans VS 2008. Je suppose qu'il est temps d'acheter un livre de référence WCF 2010. Merci pour votre aide Marc. Bill – Bill

+0

@Bill: Je pense que Juval a aussi une version de cette application qui fonctionne avec netTcpBinding ou quelque chose - quelque chose que vous pouvez gérer localement, dans votre réseau local, sans Azure ... –

+0

@Bill: Vous pouvez simplement ajouter la référence à Microsoft.Servicebus.dll et le projet compilera. Vous n'aurez pas besoin d'Azure pour la plupart des exemples. En outre, vous devrez faire attention car la plupart des exemples d'iDesign incluent une version de ServiceModelEx. Si vous décompressez les téléchargements dans le mauvais ordre, vous pouvez rencontrer des problèmes. –