我想使用结构映射来注入一个 wcf 客户端,但我也希望这个客户端从配置中读取端点和绑定配置。我尝试了以下方法:
For<IServiceClient>().LifecycleIs(new UniquePerRequestLifecycle()).Use<ServiceClient>().
Ctor<string>("endpointConfigurationName").Is("WsHttpBinding_IService");
但这会导致错误:
StructureMap 异常代码: 205\n缺少请求的实例属性 \"remoteAddress\" for InstanceKey \"e50e036b-9d71-47de-8ac2-d53a641e9be8\"
当我通过 remoteAddress 时,它的工作就像预期的那样:
For<IServiceClient>().LifecycleIs(new UniquePerRequestLifecycle()).Use<ServiceClient>()
.Ctor<string>("endpointConfigurationName").Is("WsHttpBinding_IService")
.Ctor<string>("remoteAddress").Is("https://myurl/Service.svc");
我不明白为什么第一个构造函数重载没有从配置中读取端点地址?配置如下所示:
>
<client>
<endpoint address="https://myurl/Service.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService" contract="IService" name="WsHttpBinding_IService" />
</client>