无法解析vpn上的主机名

时间:2015-11-26 01:01:40

标签: c# wcf xamarin xamarin.ios xamarin.forms

我一直在尝试让我的应用连接到公司网络中的WCF服务。

我们使用VPN来保持一切隐藏和安全。

我尝试了几种不同的方法,而且我无法让手机连接到该服务。

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

然后我切换到System.Net.HttpClient。这在大约50秒之后再次失败,但这次它抛出了一个带有消息&#34的System.Net.WebException;找不到具有指定主机名的服务器"。

我终于尝试了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吗?我认为这是自动处理的。

1 个答案:

答案 0 :(得分:1)

我调查了VPN配置以确保它是正确的 我调查了DNS配置以确保它能够正确解析 我调查了手机的配置以确保它是正确的。

我最终发现问题是Airwatch的隧道VPN问题。

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

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

很快就会期待一个补丁形式的气表,希望能够(希望)纠正这个问题!