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

0 ответов

Другие вопросы по тегам