有没有办法让WCF服务知道呼叫来自哪台机器?

时间:2010-03-16 22:55:25

标签: wcf wcf-client

我有一个WCF服务并且没有在客户端更改任何代码,有没有办法可以知道调用者的详细信息,例如MachineName和ApplicationName?

基本上,我无法更改客户端代码以传递这些信息。

我尝试在服务器端使用System.Web.HttpContext来跟踪此信息,但HttpContext.Current为NULL。我想这不是它的正确用法。

有什么建议吗?

由于 萨拉

2 个答案:

答案 0 :(得分:2)

我通过这篇文章找到了答案:Client IP addresses in Orcas

以下是代码片段(使用.NET 3.5):

// Track the IP address and port of the calling client
OperationContext context = OperationContext.Current;
MessageProperties properties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
Trace.TraceInformation("Receive a document from {0}:{1} via {2}", endpoint.Address, endpoint.Port, properties.Via.AbsoluteUri);

答案 1 :(得分:0)

您可以在WCF 3.5中获取IP地址,但就是这样(保留双工服务,在此期间您可能会获得返回URL)