Клиент Azure AppFabric - PullRequest
       3

Клиент Azure AppFabric

0 голосов
/ 22 декабря 2010

Я боролся с этим в течение 2 дней, но до сих пор не могу заставить его работать.

Я собираюсь присоединиться к диаграмме в моем вопросе, чтобы моя проблема прояснилась: Документы Google PNG

Вот общая проблема:

У меня есть простая служба WCF, развернутая в Windows Azure, и я могу получить к ней доступ без проблем.Теперь я хочу получить доступ к той же службе через ServiceBus (т.е. AppFabric), и именно здесь я застрял.Я создал пространство имен в appfabric, установил пакет из 5 соединений, и я начинаю!

Вот мой файл определения службы (csdef):

<?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>

Затем, вот мой файл конфигурации службы (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>

Теперь последняя часть: мое консольное приложение (клиент):

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();
   }
  }
 }

Как вы можете заметить, моя служба имеетпростой привет мир.В моем консольном приложении написано «Нет службы, размещенной в указанном месте» ..

Я пытался изменить URI, пытался поиграть с конфигурацией несколько раз, прежде чем я получил тот, который у меня сейчас, но мои усилия пошлиобанкротился ^ _ ^

Если у вас, ребята, есть идея, это будет слишком замечательно:)

Заранее спасибо за ваши предложения и указания

Приветствия Милуд B

1 Ответ

1 голос
/ 22 декабря 2010

Является ли хост вашего сервиса в веб-роли Azure? Если это так, проблема может заключаться в том, что, если «не активировать» внешне, служба WCF никогда не создает исходящее соединение с служебной шиной. Эта активация обычно выполняется IIS при размещении запроса к службе. Но при использовании служебной шины служебный узел должен активно инициировать этот проект.

Возможно, вы захотите обратиться к этой статье блога: http://www.wadewegner.com/2010/05/host-wcf-services-in-iis-with-service-bus-endpoints/

...