如何捕获WCF服务端点

3
我正在实现一个由IIS托管的WCF服务,该服务模拟调用者。当我在Web.config文件中设置服务端点配置时,一切都按预期工作。
我想以编程方式设置服务端点,但我错过了一些东西,因为调用者没有被模拟(端点除了这个小细节之外运行良好)。是否有任何方法可以在代码中捕获从web.config创建的服务端点,以便在调试时找到这个端点与我以编程方式创建的端点之间的区别?
谢谢,
Christian
1个回答

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" 属性。

非常感谢!我设置这个没有任何问题,它像魔法一样工作 - 现在我只需要弄清楚我的端点之间的区别是什么。 - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接