我有一个使用两个端点公开服务的wcf服务。一个端点用于Web服务调用,而另一个端点用于休息。
有没有办法确定从哪个端点调用服务器功能?
答案 0 :(得分:15)
实际上,与我的想法相反 - 实际上很容易找出调用服务的端点。在您的服务方法中,添加以下代码行:
OperationContext oc = OperationContext.Current;
if(oc != null)
{
string wasCalledOn = oc.EndpointDispatcher.EndpointAddress.Uri.ToString();
}
但正如我所说:我会非常明智地使用它并且“防御性地” - 不要根据调用方法的端点来改变服务行为 - 这将是非常糟糕的设计!
我尝试了几个SOAP端点 - 不是100%确定如何处理REST(但很可能是相同或非常相似) - 尝试一下!
但是对于日志记录,这应该可以正常工作!
答案 1 :(得分:1)
取消博客条目here:
你只需要看一下 通道上的LocalAddress 当前的操作上下文 方法:
OperationContext.Current.Channel.LocalAddress