14

我有一个使用两个端点公开服务的 wcf 服务。一个端点用于 Web 服务调用,而另一个端点用于休息。

有没有办法确定从哪个端点调用服务器函数?

4

2 回答 2

15

实际上,与我的想法相反 - 实际上很容易找出调用服务的端点。在您的服务方法中,添加以下代码行:

OperationContext oc = OperationContext.Current;

if(oc != null)
{
    string wasCalledOn = oc.EndpointDispatcher.EndpointAddress.Uri.ToString();
}

但正如我所说:我会非常明智和“防御性地”使用它——不要根据你的方法被调用的端点开始改变服务行为——那将是非常糟糕的设计!

我用几个 SOAP 端点尝试了这个——不是 100% 确定如何处理 REST(但很可能相同或非常相似)——试试吧!

但是对于日志记录,这应该可以正常工作!

于 2011-02-08T15:34:00.147 回答
2

这里的博客条目中提取:

只需要在方法中查看当前Operation Context的Channel上的LocalAddress即可:

OperationContext.Current.Channel.LocalAddress
于 2011-02-08T15:34:14.867 回答