【问题标题】:Determine which wcf endpoint is being used on the server确定服务器上正在使用哪个 wcf 端点
【发布时间】:2011-06-23 12:04:39
【问题描述】:

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

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

【问题讨论】:

  • 我遇到的一个问题是肥皂和休息处理错误的方式不同。要在 rest 中报告错误,您需要发送一个错误的请求作为响应,这会导致 soap 中出现未经处理的异常。

标签: .net wcf wcf-endpoint


【解决方案1】:

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

OperationContext oc = OperationContext.Current;

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

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

我在几个 SOAP 端点上尝试过这个 - 不是 100% 确定如何处理 REST(但很可能相同或非常相似) - 试试看!

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

【讨论】:

  • 我一直在使用.Segments.Last(),而不是.ToString()
【解决方案2】:

摘自博客条目here

你只需要看看 通道上的 LocalAddress 中的当前操作上下文 方法:

OperationContext.Current.Channel.LocalAddress

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2012-04-05
    • 1970-01-01
    相关资源
    最近更新 更多