2012-10-24 70 views
3

我正在实现由IIS托管的WCF服务,该服务模拟调用方。当我在Web.config文件中有服务端点配置时,一切都按预期工作。如何捕获WCF服务端点

我想以编程方式设置服务端点,但我缺少一些东西,因为调用者没有模拟(端点工作正常,除了那个小细节外)。有没有什么办法可以在代码中捕获从web.config创建的服务端点,以便在调试时可以找到它与我以编程方式创建的区别?

感谢,

基督教

回答

1

你可以使用默认的服务主机工厂访问从web.config中的端点在你的代码(也可能是一个调试器附加到IIS进程看它所包含的内容) 。

public class MyServiceHostFactory : ServiceHostFactory 
    { 
     protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
     { 
      return new MyServiceHost(serviceType, baseAddresses); 
     } 
    } 

    public class MyServiceHost : ServiceHost 
    { 
     public MyServiceHost(Type serviceType, Uri[] baseAddresses) 
      : base(serviceType, baseAddresses) 
     { 
     } 

     protected override void OnOpening() 
     { 
      // At this point you have access to the endpoint descriptions 
      foreach (var endpoint in this.Description.Endpoints) 
      { 
       Console.WriteLine("Endpoint at {0}", endpoint.Address.Uri); 
       Binding binding = endpoint.Binding; 
       BindingElementCollection elements = binding.CreateBindingElements(); 
       foreach (var element in elements) 
       { 
        Console.WriteLine(" {0}", element); 
       } 
      } 

      base.OnOpening(); 
     } 
    } 

而在.svc文件,指定Factory="YourNamespace.MyServiceHostFactory"属性。

+0

非常感谢!我没有问题设置它,它的作用就像一个魅力 - 现在我只是'必须弄清楚我的端点之间的区别 - ) – Christian