Вопрос

Как пользоваться замком WCFFACTION и использовать стандартные настройки файла конфигурации WCF?

Если я регистрирую так:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel()))
);

Я получаю следующую ошибку:

Сервис '{name}' имеет нулевое приложение (неинфраструктурное) конечные точки.

Если я уйду:

.Configure(configurer => configurer.ActAs(new DefaultServiceModel()))

Похоже, что поведение на конфиге игнорируется.

Какое правильное использование здесь?

Это было полезно?

Решение

Хорошо, понял это :)

Я регистрирую так:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel().Hosted()))
);

То Хостел () есть там, чтобы указать, что я принимаю услуги; Иначе кажется, как будто объект WCF постарается принять их, что привело к конфликтам порта.

Так что проблема заключалась в том, что имя сервиса в файле конфигурации имеет быть полным типом имени реализации. Если нет, не принимает ошибку, указав что-то вдоль строк, не определенных конечных точек. Так что имя сервиса нет так же, как имя, указанное в Виндзоре.

Другие советы

Ты почти там.

Ты нуждаешься в этом:

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top