Castle Windsor/WcfFacility: у службы нет конечных точек приложений (не инфраструктура)
Я унаследовал приложение, которое реализует регистрацию службы WCF с помощью Castle Windsor, и это WcfFacility, как это...
public static IWcfServiceModel RegisterWcfService(this IWindsorContainer container, WcfTypePair wcfServiceTypePair)
{
var serviceModel = GetServiceModel(container, wcfServiceTypePair);
var componentReg = Component
.For(wcfServiceTypePair.Interface)
.ImplementedBy(wcfServiceTypePair.Implementation)
.Named(wcfServiceTypePair.Implementation.Name)
.AsWcfService(serviceModel);
container.Register(componentReg);
return serviceModel;
}
private static DefaultServiceModel GetServiceModel(IWindsorContainer container, WcfTypePair wcfServiceTypePair)
{
var baseAddress = $"https://localhost:443/Services/";
var endpointAddress = baseAddress + wcfServiceTypePair.Implementation.Name;
var address = new EndpointAddress(endpointAddress);
var wsHttpBinding = BindingHelper.GetWsHttpBinding();
var endpoint = WcfEndpoint.BoundTo(wsHttpBinding).At(address);
var model = new DefaultServiceModel()
.AddEndpoints(endpoint);
return model;
}
web.config
практически пуст, так как вся регистрация WCF выполняется в коде.
Странно то, что это работает, только если на веб-сайте IIS есть привязки как для HTTP, так и для HTTPS.
Теперь HTTPS ожидаем и желателен, но если я отбрасываю HTTP-привязку, я получаю ошибку
Служба WindsorWcfDemo.Services.MyService не имеет конечных точек приложений (не инфраструктурных). Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за невозможности найти элемент службы, соответствующий имени службы, в файле конфигурации или из-за отсутствия конечных точек в элементе службы.
Вопрос в том, почему HTTP
Обязательный требуется, чтобы сделать эту работу?
Полная версия доступна в этом WindsorWcfDemo