【问题标题】:Weird port being reported in WCF for remote client在 WCF 中为远程客户端报告了奇怪的端口
【发布时间】:2009-05-05 19:01:30
【问题描述】:

我有一个配置有 WebHttpBinding 的 IIS 托管 WCF 服务。当您创建一个新的时,它与 VS2008 创建的默认 WCF 服务相同。我所做的唯一更改是允许从 javascript 调用它。

在测试方法GetData(int value)中,我返回一个显示远程客户端IP地址、端口和用户代理的字符串。一切正常,除了我不期待它返回的端口号。我期待端口 80,但得到的是 49353 之类的东西。下面是我正在调用的方法。

public string GetData(int value)
    {
        OperationContext context = OperationContext.Current;

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



        return string.Format("Hello {0}! \r\naddress: {1}\r\nport: {2}\r\nuseragent: {3}", 
            value, endpointProperty.Address, endpointProperty.Port, WebOperationContext.Current.IncomingRequest.UserAgent);
    } 

就像我说的,我从 javascript 调用这个方法。 IIS 配置了 80 端口,所以不知道为什么端口报错。

【问题讨论】:

    标签: c# javascript wcf


    【解决方案1】:

    我想你可能有点倒退了。端口 80 是您正在侦听的位置,但一旦发生这种情况,它会将其传递给一个新的临时端口来处理该连接。

    此外,客户端也可能使用临时端口打开到端口 80 的连接。因此,客户端的端口可能是典型“固定”端口范围 (0-1024) 之外的某个“随机”端口号。

    【讨论】:

    • 噢!我愿意打赌你是对的。我们到这里来的都是下雨,这让我很累。感谢您的复习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多