【问题标题】:WCF 4 Rest Getting IP of Request?WCF 4 Rest获取请求的IP?
【发布时间】:2011-04-05 02:01:09
【问题描述】:

嘿,您如何通过以下方式获取发出请求的人的 IP 地址:

    [ServiceContract]    
    [AspNetCompatibilityRequirements(RequirementsMode = 
    AspNetCompatibilityRequirementsMode.Required)]    
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]        
    public partial class UsersService
    {                          
        [WebInvoke(UriTemplate = "", Method = "PUT")]        
        public User AddNewUser(User newUser)
        {            
            // code goes here including GETTING AN IP??
        }

谢谢!

【问题讨论】:

    标签: c# wcf rest tcp


    【解决方案1】:

    在 AddNewUser 中使用如下 sn-p:

    OperationContext context = OperationContext.Current;
    MessageProperties messageProperties = context.IncomingMessageProperties;
    RemoteEndpointMessageProperty endpointProperty =
      messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
    

    RemoteEndpointMessageProperty 实例提供地址和端口属性。

    【讨论】:

    • 问题是,除非 .Net 4 中有所改变,否则在使用 WebHttpBinding 时获取 OperationContext 确实很痛苦。我可以通过创建一个 MessageInspector 来做到这一点,但它需要放弃一些跳跃。
    • 我不确定你的意思是什么。 OperationContext 必须在任何 WCF 调用中可用,即使它是在 WebHttpBinding 上公开的 REST 服务。我在 WCF 4 中对其进行了测试,它可以工作。
    • 在带有 WebHttpBinding 的 .Net 3.5 中,您可以访问 WebOperationContext,但 OperationContext 不能直接使用。我很高兴听到他们在 4.0 中修复了这个问题。
    • 不知何故,我获得了托管服务的服务器名称。我想获取客户详细信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2011-07-19
    • 2017-11-25
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多