Использование Ninject.Extensions.Wcf для веб-службы, размещенной в ASP.NET MVC 2 - PullRequest
2 голосов
/ 24 февраля 2012

Я использую ninject в веб-службе wcf. Этот веб-сервис размещен в проекте, созданном как «Пустое веб-приложение ASP.NET MVC 2».

Используются ссылки на Ninject.dll.v2 и Ninject.Extensions.Wcf.dll v1.

Разметка для служебного файла:

<%@ ServiceHost 
Language="C#"
Debug="true"
Service="wcf_ninject.Service1"
CodeBehind="Service1.svc.cs"
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %>

. global.asax наследуется от NinjectWcfApplication

public class Global : NinjectWcfApplication
{
    protected override IKernel CreateKernel()
    {
        return new StandardKernel(new WCFNinjectModule());
    }
}

с

public class WCFNinjectModule : NinjectModule
{
    public override void Load()
    {
        Bind<IRepository>().To<EFRepository>();
        // rest of bindings
    }
}

и единственным конструктором службы является:

public Service1(IRepository repository)
{
    _repo = repository;
}

Большую часть времени работает нормально, но время от времени я получаю сообщение об ошибке:

«Ошибка активации Service1 Доступно более одной совпадающей привязки»

Но, как уже было сказано, я не могу найти путь воспроизведения.

1 Ответ

1 голос
/ 24 февраля 2012

Я предполагаю, что вы используете более старую версию. Я помню, что была проблема многопоточности с неявными привязками в 2.1 или даже 2.0. Это должно быть исправлено в 2.2 и 3.0.

...