我正在开发一项支持Android,BlackBerry,iOS和WP7平台上的移动应用程序的服务。这些应用程序将连接到我正在处理的各种基于REST的WCF服务。我想看看客户端应用程序传递给我的服务的信息。为此,我在WCF服务中编写了当前操作:
[OperationContract]
[WebGet(UriTemplate = "/GetRequesterInfo")]
public string GetRequesterInfo()
{
OperationContext context = OperationContext.Current;
string message = "Session ID: " + context.SessionId;
return message;
}
当我调用此代码时,我注意到SessionId
是一个空字符串。另外,我想尽可能多地获取有关客户端的信息。例如,如果这是ASP.NET,我可以使用HttpRequest
对象并获取:
虽然有更多属性,但我相信你会明白这一点。这引出了几个问题:
答案 0 :(得分:4)
您可以使用System.ServiceModel.Channels.MessageProperties
:
OperationContext context = OperationContext.Current;
if (context != null)
{
MessageProperties messageProperties = context.IncomingMessageProperties;
如果请求实际来自浏览器,您可以获得HttpRequest
对象,这就是您要求的对象。
这是我MessageProperties
的屏幕截图,它应该为您提供有关如何访问这些属性的足够信息: