#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») .Образ жизни. Переходный процесс);