StructureMap异常代码:202没有为PluginFamily System.Net.Http.HttpMessageHandler,System.Net.Http,Version = 4.2.0.0版本定义默认实例

问题描述 投票:0回答:1

我有一个WCF应用程序,正在其中监听消息。 EventHandler使用ServiceClient,后者使用HttpClient调用另一个API。

IoC类:

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");
    });
});

但是,标题仍然有异常。

c# wcf structuremap
1个回答
0
投票

我能够解决此问题。问题是我使用的是旧版本的StructureMap(v2.6.4.1),它与System.Net.Http版本= 4.2.0.0不兼容。由于最新版本不存在ObjectFactory,因此更新到最新版本并进行了一些调整后,我得到了一个错误:

没有默认实例注册,并且无法自动确定类型'System.Net.Http.HttpMessageHandler'] >>

这是因为StructureMap默认尝试使用最贪婪的构造函数。为了解决这个问题,我将HttpClient的DI更改为此:

x.For<HttpClient>().Use<HttpClient>().SelectConstructor(() => new HttpClient());
© www.soinside.com 2019 - 2024. All rights reserved.