5

在我注册一个新的 WCF 端点时,我不知道 URI 是什么......

public void Install(IWindsorContainer container, IConfigurationStore store)
{
   var defaultClientModel = new DefaultClientModel
   {
     Endpoint = WcfEndpoint
       .ForContract<IMyService>()
       .BoundTo(new WSHttpBinding(SecurityMode.None))
       .At(  URI??? )
   };

   container.Register(WcfClient.ForChannels(defaultClientModel));
}

有什么方法可以在请求 IMyService 实例时从容器中检索 URI(这是已知的)?

是否可以使用工厂方法/动态参数之类的东西?

4

2 回答 2

4

看起来您可以在 Windsor 3.1 中使用以下语法来执行此操作:

public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
    Component.For<IMyService>()
    .AsWcfClient()
    .DependsOn((k, d) =>
        d["EndPoint"] = WcfEndpoint.BoundTo(new WSHttpBinding(SecurityMode.None)).At( URI??? )));
}

Windsor 将在首次解析 IMyService 时尝试使用给定的动态解析委托解析端点。

于 2012-10-11T22:28:38.777 回答
0

我认为您想使用UsingFactoryMethod来创建您的服务。

  • 我会在容器中注册一个自定义 UriResolver
  • 在工厂方法中解析上述 UriResolver 的实例(在需要解析服务之前不会调用它)
  • 在工厂方法中创建服务
  • 搜索城堡温莎 doco 并发誓很多。

以下链接可能有用

ravendb,城堡 IoC,Wcf 设施 - 文档会话 liefstyle

使用 Castle Windsor WcfFacility 创建客户端端点

http://www.mail-archive.com/castle-project-users@googlegroups.com/msg09012.html(这个看起来有你需要的类似代码)

https://stackoverflow.com/questions/10250077/problems-using-castle-windsor-factory-method

将参数传递给 Castle Windsor 中的 UsingFactoryMethod

Castle Windsor:UsingFactoryMethod 无法实例化并出现奇怪的错误

http://docs.castleproject.org/Default.aspx?Page=Typed-Factory-Facility-interface-based-factories&NS=Windsor&AspxAutoDetectCookieSupport=1

于 2012-10-10T06:22:34.970 回答