我正在实现一个由IIS托管的WCF服务,它模拟调用者。当我在Web.config-file中配置了服务端点时,一切都能正常工作。
我想以编程方式设置服务端点,但是我遗漏了一些东西,因为调用者没有被模拟(除了这个小细节之外,端点工作得很好)。有没有什么方法可以在代码中捕获从web.config创建的服务端点,以便在调试时可以找到此端点与我以编程方式创建的端点之间的区别?
谢谢,
克里斯蒂安
发布于 2012-10-25 13:51:39
您可以使用默认的服务主机工厂从代码中的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"属性。
https://stackoverflow.com/questions/13047989
复制相似问题