Cela fait deux jours que je me bats avec cela et je n'arrive toujours pas à le faire fonctionner.Client Azure AppFabric
Je vais rejoindre un flux de diagramme à ma question afin que mon problème se précise: Google Docs PNG
est ici la question générale:
J'ai un service simple WCF déployé sur Windows Azure et je peut y accéder sans problème. Maintenant, je veux accéder à ce même service via ServiceBus (c'est-à-dire AppFabric) et c'est là que je suis bloqué. J'ai créé un espace de noms sur appfabric, défini un pack de 5 connexions et là je commence!
Voici mon ServiceDefinition (csdef) Fichier:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CRM5_WP7_GW" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WCFGWServiceWebRole">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
<LocalResources>
<LocalStorage name="WCFServiceWebRole1.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" />
</LocalResources>
Alors, voici mon fichier ServiceConfiguration (de cscfg):
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="CRM5_WP7_GW" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
<Role name="WCFGWServiceWebRole">
<Instances count="2" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
Maintenant, la dernière partie: Mon application de la console (le client):
namespace CRM5WP7HARDCLIENT
{
class Program
{
static void Main(string[] args)
{
// create the service URI based on the service namespace
Uri serviceUri = ServiceBusEnvironment.CreateServiceUri("https", "myNameSpace", "myServiceName");
// create the credentials object for the endpoint
TransportClientEndpointBehavior sharedSecretServiceBusCredential = new TransportClientEndpointBehavior();
sharedSecretServiceBusCredential.CredentialType = TransportClientCredentialType.SharedSecret;
sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerName = "issuerName";
sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerSecret = "issuerSecret";
// create the channel factory loading the configuration
ServiceEndpoint sep = new ServiceEndpoint(ContractDescription.GetContract(typeof(IGWService)));
sep.Address = new EndpointAddress(serviceUri);
sep.Binding = new NetTcpRelayBinding();
sep.Binding = new BasicHttpRelayBinding();
ChannelFactory<IGWService> channelFactory = new ChannelFactory<IGWService>(sep);
// apply the Service Bus credentials
channelFactory.Endpoint.Behaviors.Add(sharedSecretServiceBusCredential);
// create and open the client channel
IGWService channel = channelFactory.CreateChannel();
System.Console.WriteLine("Opening channel..." + serviceUri.ToString());
((ICommunicationObject)channel).Open();
System.Console.WriteLine("Calling operation...");
System.Console.WriteLine(channel.HelloWorld());
System.Console.WriteLine("Done...");
System.Console.ReadKey();
((ICommunicationObject)channel).Close();
channelFactory.Close();
}
}
}
Comme vous pouvez le constater, mon service a un monde simple bonjour. Mon application de console indique "Aucun service hébergé à l'emplacement spécifié" ..
J'ai essayé de changer l'URI, j'ai essayé de jouer avec la configuration plusieurs fois avant de finir avec celle que j'ai maintenant mais mes efforts ont fait faillite^_^
Si vous les gars avez une idée, que ça va être trop beau :)
Merci d'avance pour vos suggestions et directions
Vive B Miloud
Désolé, il est une question idiote, mais juste pour confirmer - avez-vous mis vos informations d'identification réelle dans « issuerName » et « issuerKey »? De même pour "myServiceName"? – Doobi