【问题标题】:Why is my local WCF client's IP not 127.0.0.1?为什么我的本地 WCF 客户端的 IP 不是 127.0.0.1?
【发布时间】:2009-09-02 16:32:20
【问题描述】:

我有一个 WCF 客户端和服务,通过 wsHttpBinding 使用 HTTPS。

一种常见的设置是在同一台机器上安装客户端和服务器组件。由于 SSL 原因,客户端必须设置端点地址以包含服务器的机器名称,而不是 localhost,即https://mymachine/myservice/service.svc

问题是,默认的 IIS 有一个 IP 限制白名单,仅限 127.0.0.1。如果我在 IE7 中浏览 svc 文件,这是可行的,但是当使用 WCF 客户端时,我可以在 IIS 日志中看到,WCF 服务器从 WCF 客户端的网络/真实 IP 地址接收消息,而不是 127.0.0.1,并且因此客户被拒绝。

有谁知道为什么 WCF 客户端在本地通信,使用网络 IP,而不是 127.0.0.1,这可以更改吗?

感谢任何其他解决方法,但我真的希望避免更改 SSL 设置或彻底检查绑定。最简单的解决方案似乎是在系统重启时使用客户端的新 IP 更新白名单。

请注意,我已尝试在 hosts 文件中添加我的机器名,IP 为 127.0.0.1,但这没有效果。

【问题讨论】:

    标签: .net wcf ssl https dns


    【解决方案1】:

    我对旧版本 Windows 的回忆是,Windows 在这个类别中有点烦人,因为它似乎是自命名的。换句话说,Windows 似乎认为它可以为自己的主机名提供信息,而不是让所有命名都服从您对 DNS 和 /etc/hosts 的配置选择(即使它可能与外部命名服务所说的不同)。

    因此,您可能会看到 Windows 正在将主机名与主界面的 IP 地址相匹配。这可以解释为什么您不能将主机名映射到 /etc/hosts。

    (仅供参考:这是我对我过去的个人经历和问题描述的解释。我没有花时间处理这个配置,所以可能比我提到的更多。)

    【讨论】:

    • 已接受:因为没有意见对这个答案提出异议,也没有更好的意见。
    【解决方案2】:

    替换

    https://mymachine/myservice/service.svc
    

    https://localhost/myservice/service.svc
    

    工作?

    【讨论】:

    • 很遗憾不是,因为 SSL 证书是机器名,而不是 localhost
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    相关资源
    最近更新 更多