Код исключения StructureMap: 202 Не определен экземпляр по умолчанию для системы PluginFamily. Net .Http.HttpMessageHandler, System. Net .Http, версия = 4.2.0.0 - PullRequest
0 голосов
/ 19 марта 2020

У меня есть приложение WCF, где оно прослушивает сообщение. EventHandler использует ServiceClient, который использует HttpClient для вызова другого API.

Класс Io C:

public static class IoC
{
    public static IContainer Initialize()
    {
        ObjectFactory.Initialize(x =>
        {
            // Handlers
            x.For<IHandle>().Use<EventHandler>();

            // Service Clients
            x.For<HttpClient>().Use<HttpClient>();
            x.For<IServiceClient>().Use<ServiceClient>();
        });

        return ObjectFactory.Container;
    }
}

Я пытался добавить это после инициализации, но до возврата:

ObjectFactory.Configure(x =>
{
    x.Scan(scan =>
    {
        scan.LookForRegistries();
        scan.Assembly("System.Net.Http");
    });
});

Но я все еще получаю исключение в названии.

1 Ответ

0 голосов
/ 19 марта 2020

Мне удалось решить эту проблему. Проблема заключалась в том, что я использовал более старую версию StructureMap (v2.6.4.1), которая была несовместима с System. Net .Http, версия = 4.2.0.0. После обновления до последней версии и внесения некоторых корректировок, поскольку ObjectFactory не существует в последней версии, я получил сообщение об ошибке:

Экземпляр по умолчанию не зарегистрирован и не может быть автоматически определен для введите 'System. Net .Http.HttpMessageHandler'

Это связано с тем, что StructureMap по умолчанию пытается использовать самый жадный конструктор. Чтобы исправить это, я изменил свой DI для HttpClient на это:

x.For<HttpClient>().Use<HttpClient>().SelectConstructor(() => new HttpClient());
...