масштабируемое решение WCF

Я пытаюсь реализовать масштабируемое решение wcf, найденное по адресу NetFX Harmonics: создание оптимизированного, упрощенного, но масштабируемого подключения WCF

Итак, мое решение имеет 4 проекта

  • Contact.Service (контракты на услуги и данные)
  • Contact.ServiceImpl (HostFactory и сама служба)
  • Contact.ServiceHost (Web.config и Person.svc)
  • Contact.ServiceClient

В Contact.ServiceClient есть App.config и Program.cs, которые фактически вызывают службу.

App.config

<configuration> 
  <appSettings>
    <add key="PersonServiceActiveEndpoint" value="PersonServiceBasicHttpBinding" />
  </appSettings>    
  <system.serviceModel>
    <client>
      <endpoint name="PersonServiceBasicHttpBinding"
                address="http://localhost:1031/Person.svc"
                binding="basicHttpBinding"
                contract="Contact.Service.IPersonService" />
    </client>
  </system.serviceModel>  
</configuration>

Program.cs

  BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
            EndpointAddress endpointAddress = new EndpointAddress("http://localhost:1031/Person.svc");
            IPersonService personService = new ChannelFactory<IPersonService>(basicHttpBinding, endpointAddress).CreateChannel();

            Person person = personService.GetPersonData("F488D20B-FC27-4631-9FB9-83AF616AB5A6");
            Console.WriteLine(person.FirstName);

Когда я пытаюсь запустить этот пример, возникает исключение:

На http://localhost:1031/Person.svc не было ни одной конечной точки, которая могла бы принять сообщение. Это часто вызвано неверным адресом или действием SOAP.

P.S. Person.svc находится в моем проекте Contact.ServiceHost

<%@ ServiceHost Service="Contact.Service.PersonService" %>

person user1084557    schedule 08.02.2012    source источник


Ответы (1)


какова конфигурация хоста службы? звучит как одна из 2 проблем:

  • узел службы не настроен на прослушивание того же порта.
  • хост-приложение вообще не запускается

Я предполагаю, что, проверив web.config проекта узла службы, вы, вероятно, обнаружите, что он либо прослушивает другой порт, либо вообще не запускается и, следовательно, не прослушивает.

Хост Visual Studio запускается и размещает службу? Обычно вы получаете небольшое всплывающее окно в области уведомлений рядом с часами, в котором говорится, что хост работает, и вы можете видеть, на каком порту он работает. если этого не происходит, то, вероятно, вам нужно настроить его для запуска хост-проекта, а также клиента.

Чтобы клиент и сервер запускались одновременно, вам необходимо:

  • Щелкните правой кнопкой мыши файл решения и выберите Set Startup Projects...
  • Выберите «Несколько стартовых проектов» и выберите «Пуск» для своего клиентского и серверного проектов, оставьте для остальных значение «Нет».
person Sam Holder    schedule 08.02.2012
comment
Я установил несколько проектов запуска и не повезло. всплывающее окно с ошибкой, Проект с типом вывода библиотеки классов не может быть запущен напрямую. Еще одна вещь, я изменил Person.svc, и теперь он использует factory ‹%@ ServiceHost Service=Person.Service.PersonService Factory=Person.Service.PersonServiceFactory %› И вы правы, служба wcf не запущена, нет всплывающего информационного сообщения на таскабаре - person user1084557; 09.02.2012
comment
каков тип проекта servicehost? Это не должна быть библиотека классов. похоже это твоя проблема - person Sam Holder; 09.02.2012
comment
Я изменил проект Contact.Service, на самом деле я удалил и создал его снова (теперь вместо dataclasslibrary выберите сервисную библиотеку WCF). При отладке у меня появляется всплывающее окно с информацией: Использование: WCFSVCHOST.exe /service:‹pathToServiceDll› - person user1084557; 09.02.2012
comment
так твоя проблема исправлена? Отлично, если так. Если это помогло, вы можете проголосовать, используя стрелку вверх слева :) - person Sam Holder; 09.02.2012
comment
Я не могу голосовать, для этого требуется 15 репутации, извините. Я принимаю ваш ответ, по крайней мере, это :) Спасибо, всего наилучшего. - person user1084557; 09.02.2012