【问题标题】:HttpRequestMessage.IsLocal() false on one site true on another on the same serverHttpRequestMessage.IsLocal() 在一个站点上为 false 在同一服务器上的另一个站点上为 true
【发布时间】:2014-02-23 01:29:21
【问题描述】:

我正在 Windows 服务器上运行 asp.net web api 应用程序。我有 2 个具有不同 IP 地址的站点。当应用程序部署在其中一个站点上时,IsLocal 为真,而在另一个站点上部署时,则为假。

查看源代码,归结为:

    [DllImport("aspnet_state.exe", CharSet=CharSet.Ansi)]
    internal static extern void STWNDGetLocalAddress(IntPtr tracker, StringBuilder buf);

这是返回本地地址的方法,为什么第二个ip无效?网络配置如下所示(.79 ip-address 是 IsLocal 返回 false 的那个)

如何让 IsLocal 考虑第二个 ip?

【问题讨论】:

标签: asp.net asp.net-web-api windows-server


【解决方案1】:

IsLocal 在以下三个条件中的任何一个中返回 true:

  • 请求来自 127.0.0.1
  • 请求来自本地主机
  • 请求来自与服务器 IP 相同的 IP

您的第一步应该是注销传入请求的 IP,以便确定 Web API 认为的来源。

【讨论】:

  • 不是本地主机,也不是 127.0.0.1。但是 IP 地址被分配给服务器上的适配器。但是为什么不是本地的。我将添加一些日志记录以获取更多上下文。如果服务器有多个 ip-address,什么是“服务器 ip”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2023-03-31
  • 2018-03-20
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
相关资源
最近更新 更多