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

我有一个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");
    });
});

但是,标题仍然有异常。

xty2004 回答:StructureMap异常代码:202没有为PluginFamily System.Net.Http.HttpMessageHandler,System.Net.Http,Version = 4.2.0.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());
本文链接:https://www.f2er.com/2618912.html

大家都在问