Неполная проблема разрешения зависимостей для службы ASMX - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь внедрить свои зависимости в устаревший веб-сервис ASP.NET .asmx, но я нахожу их пустыми. Вот мой код:

Ninject переплетный модуль:

public class NinjectBindings : Ninject.Modules.NinjectModule
{
    public override void Load()
    {
        Bind<IClientContextFactory>().To<ClientContextFactory>();
        Bind<IMapper>().ToMethod(AutoMapper).InSingletonScope();
    }

    private IMapper AutoMapper(Ninject.Activation.IContext context)
    {
        Mapper.Initialize(config =>
        {
            config.ConstructServicesUsing(type => context.Kernel.Get(type));

            // Users
            config.CreateMap<User, UserDto>();

            // Usergrid 
            config.CreateMap<UserDto, UserGridDetails>();

            // Supervisor
            config.CreateMap<User, SupervisorDto>();

            // Branch
            config.CreateMap<Branch, BranchDto>();

        });

        Mapper.AssertConfigurationIsValid(); // optional
        return Mapper.Instance;
    }
}

Затем я создаю экземпляр ядра в tGlobal.asax:

    protected override IKernel CreateKernel()
    {
        IKernel kernel = new StandardKernel(new NinjectBindings());
        return kernel;
    }

В моем веб-сервисе (.asmx):

[Inject]
    public IClientContextFactory contextFactory { get; set; }

    [Inject]
    public IMapper mapper { get; set; }

    public GridService()
    {
        contextFactory = DependencyResolver.Current.GetService<IClientContextFactory>();
        mapper = DependencyResolver.Current.GetService<IMapper>();
    }

Позже я попытаюсь использовать свои зависимости следующим образом:

  List<UserGridDetails> userList = new User(contextFactory, mapper).GetUsers();

Здесь я считаю, что и contextFactory, и экземпляры mapper равны нулю Я отладил приложение и убедился, что весь приведенный выше код выполняется. Что я делаю не так?

1 Ответ

0 голосов
/ 08 мая 2019

Решено с помощью решения, предложенного здесь: Ninject добавить сервисный интерфейс в веб-сервис

Вам необходимо расширить класс веб-сервиса с WebServiceBase на Ninject.Web.WebServiceBase

...