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