Проблема с созданием службы WCF с помощью Windsor

#wcf #castle-windsor

#wcf ( ВКФ ) #castle-виндзор #wcf

Вопрос:

Кто-нибудь знает, как настроить WCF с помощью Windsor в IIS 7.0? Я использую последнюю версию из WCF Windsor facility trunk и Windsor 2.1.1. Пример на http://www.castleproject.org/container/facilities/trunk/wcf/index.html устарела. Даже в демонстрационном проекте в WCF facility не упоминается, как настроить службу WCF в IIS с помощью конфигурации, и я не смог найти ни одного примера, где я мог бы настроить WCF на стороне сервера, используя раздел system.ServiceModel web.config или даже с помощью кода. Когда я использую следующий код, он всегда создает BasicHttpBinding, и я не мог понять, как настроить разные привязки.

 protected void Application_Start(object sender, EventArgs e)
{
    var returnFaults = new ServiceDebugBehavior
                           {
                               IncludeExceptionDetailInFaults = true,
                               HttpHelpPageEnabled = true
                           };

    var metadata = new ServiceMetadataBehavior {HttpGetEnabled = true};

    container = new WindsorContainer()
        .AddFacility<WcfFacility>()
        .Register(
            Component.For<IServiceBehavior>().Instance(returnFaults),
            Component.For<IServiceBehavior>().Instance(metadata),
            Component.For<IMyService>()
                     .Named("MyService")
                     .ImplementedBy<MyService>()
                     .LifeStyle.Transient
            );
}
  

И вот MyService.svc

 <%@ ServiceHost Language="C#" Debug="true" Service="MyService" 
                Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" %>
  

Комментарии:

1. Прошло некоторое время, и я не помню. В настоящее время я даже не работаю с .NET. Извините!

Ответ №1:

Недавно я написал сообщение в блоге о WCF-сервисе Windsor. Обязательно прочитайте также комментарии, поскольку они включают обсуждение с участием одного из активных коммиттеров Windsor; они должны дать вам довольно хорошее представление о будущем направлении.

Комментарии:

1. Спасибо за отметку ответа. В вашей статье и комментариях говорится о том, где настроить Service host factory, что замечательно. Мой вопрос заключается в том, как настроить конфигурацию с привязками, отличными от привязок по умолчанию. Там ничего не упоминается об этом, как и в комментариях. Я должен также упомянуть, что я новичок в Windsor. Я также не знаю, как подключить эту фабрику хостов служб для установки при запуске приложения IIS.

2. Windsor не имеет ничего общего с управлением привязками. Вы должны сделать это с помощью стандартных элементов конфигурации WCF: msdn.microsoft.com/en-us/library/ms731320 (v = VS.100).aspx

3. Как я упоминал в вопросе, он не получает привязки из файла конфигурации WCF. Она привязывает только базовую привязку HttpBinding, хотя у меня есть wsHttpBinding, указанный в web.config. Интересно, что если я закомментирую всю конфигурацию WCF из web.config, служба по-прежнему инициализируется таким же образом с помощью BasicHttpBinding. Я подозреваю, что мне чего-то не хватает, и именно поэтому я ищу образец.

4. Марк, вот новые изменения, которые я внес в код на основе публикации в твоем блоге. Однако я получаю следующую ошибку: «Не удалось найти компонент с именем MyService, вы забыли его зарегистрировать?» Теперь, когда я добавляю компонент, подобный приведенному ниже (добавлен Named()), MyService.svc сообщает мне, что «Публикация метаданных для этой службы в настоящее время отключена». это не так, потому что я добавил конечную точку mex в конфигурацию. Есть идеи? контейнер. Зарегистрировать ( компонент . Для<MyService>() .Named(«Myervice») .Образ жизни. Переходный процесс);