Web Api答复对ipv6的请求,但不对ipv4的请求

时间:2019-09-12 09:57:52

标签: .net asp.net-web-api ipv6 ipv4

我创建了一个非常简单的Web API控制器,用于响应简单的Ping调用。问题在于它仅答复IPv6请求,而不答复IPv4。

[HttpGet]
[Route("api/test/ping")]
public HttpResponseMessage Ping()
{
    return Request.CreateResponse(HttpStatusCode.OK, 
      "The Web Api is alive. " + Request.RequestUri.ToString());
}

当我使用以下命令进行测试时,它运行良好:

http://localhost:20080/api/test/ping

当我用机器名称尝试时,它也能很好地工作:

http://mymachine:20080/api/test/ping

但是当我尝试使用IP地址时它不会答复:

http://192.168.1.131:20080/api/test/ping

我在计算机上的网络设置中同时运行IPv4和IPv6。 当我键入(在控制台窗口中)

> ping 192.168.1.131

我确实得到了很好的回应:

Reply from 192.168.1.131: bytes=32 time<1ms TTL=128
Reply from 192.168.1.131: bytes=32 time<1ms TTL=128
Reply from 192.168.1.131: bytes=32 time<1ms TTL=128
Reply from 192.168.1.131: bytes=32 time<1ms TTL=128

在控制台窗口中键入时

> ping mymachine

我也得到了很好的答复,但是使用了IPv6:

Reply from fe80::d1b4:bd5a:1b66:a7c4%4: time<1ms
Reply from fe80::d1b4:bd5a:1b66:a7c4%4: time<1ms
Reply from fe80::d1b4:bd5a:1b66:a7c4%4: time<1ms
Reply from fe80::d1b4:bd5a:1b66:a7c4%4: time<1ms

我已经尝试在HttpSelfHostServer中进行此操作,并在我的计算机上的IIS中运行它。结果相同。 问题是我想从我当地的办公室外面使用它。通过路由器,路由器的端口转发仅支持IPv4。

默认使用WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

我认为这应该很容易解决,但是我还没有找到解决方案。该怎么解决?

0 个答案:

没有答案