3
我正在实现由IIS托管的WCF服务,该服务模拟调用方。当我在Web.config文件中有服务端点配置时,一切都按预期工作。如何捕获WCF服务端点
我想以编程方式设置服务端点,但我缺少一些东西,因为调用者没有模拟(端点工作正常,除了那个小细节外)。有没有什么办法可以在代码中捕获从web.config创建的服务端点,以便在调试时可以找到它与我以编程方式创建的区别?
感谢,
基督教
我正在实现由IIS托管的WCF服务,该服务模拟调用方。当我在Web.config文件中有服务端点配置时,一切都按预期工作。如何捕获WCF服务端点
我想以编程方式设置服务端点,但我缺少一些东西,因为调用者没有模拟(端点工作正常,除了那个小细节外)。有没有什么办法可以在代码中捕获从web.config创建的服务端点,以便在调试时可以找到它与我以编程方式创建的区别?
感谢,
基督教
你可以使用默认的服务主机工厂访问从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