HttpRequestMessage.IsLocal()在一个站点上为false在同一服务器上的另一个站点上为true

时间:2014-01-30 16:14:12

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

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

检查源代码,可以归结为:

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

这是返回本地地址的方法,为什么不是第二个ip有效?网络配置看起来像这样(.79 ip-address是IsLocal返回false的地址)

enter image description here

如何让IsLocal考虑第二个ip?

1 个答案:

答案 0 :(得分:3)

IsLocal在以下三种情况中都会返回true:

  • 请求来自127.0.0.1
  • 请求来自localhost
  • 请求来自与服务器IP相同的IP

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