无法通过 vpn 解析主机名

Unable to resolve hostname over vpn

我一直在尝试让我的应用程序连接到企业网络中的 WCF 服务。

我们使用 VPN 来保持一切的隐蔽性和安全性。

我已经尝试了几种不同的方法,但我无法让 phone 连接到服务。

我首先将服务添加为服务引用,并使用正确的 URL 构建了客户端,但这什么也没做,然后在大约 50 秒后失败并显示一条难以描述的错误消息。

然后我切换到System.Net.HttpClient。这在大约 50 秒后再次失败,但这次它抛出了一个 System.Net.WebException 和消息 "A server with the specified hostname could not be found".

我终于也尝试了 ModernHttpClient,结果和以前一样。

(请注意,我首先在本地计算机上的测试控制台应用程序项目中尝试了前两个,以确保它们能够成功完成请求)

为了确保我没有发疯并且 VPN 正确解析名称,我在应用程序中创建了一个测试页面,上面只有一个 WebView,源设置为服务 url.
我打开应用程序并导航到测试页面,它加载服务定义页面没有问题。

供参考,这是我使用 ModernHttpClient 的当前代码:

using (var client = new HttpClient(new NativeMessageHandler()))
{
    const string soap = "<soap msg>";
    client.DefaultRequestHeaders.Add("SOAPAction", "<service namespace>");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));

    using (var response = await client.PostAsync("http://<url>/Service.svc", new StringContent(soap, Encoding.UTF8, "text/xml")))
    {
        using (var content = response.Content)
        {
            // parse the xml result
        }
    }
}

我应该做些什么来告诉 HttpClient 它必须使用 VPN?我以为这是自动处理的。

我查看了 VPN 配置以确保它是正确的。
我查看了 DNS 配置以确保它正确解析。
我查看了 phone 的配置以确保它是正确的。

我最终发现问题出在 Airwatch 的 Tunnel VPN 上。

VPN 仅在应用首次启动时有效。

如果VPN在应用重启前保持打开状态且未关闭,则将不允许连接通过。

期待 airwatch 尽快(希望)解决这个问题!