Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Internet连接C#_C#_Wcf_Http_Azure_Xmlhttprequest - Fatal编程技术网

检查Internet连接C#

检查Internet连接C#,c#,wcf,http,azure,xmlhttprequest,C#,Wcf,Http,Azure,Xmlhttprequest,我建立了一个dll,如果我们有互联网,它会返回true,如果没有,它会返回false。 我们做了以下工作: 1.呼叫ping我们的服务器,如果失败,请尝试下一步 2.调用get http请求到我们的一个WCF API 这是在win服务中完成的 在PC和一些服务器(windows server 2k R2)中,它可以连续工作几天,没有问题,每2分钟我们就会醒来并测试连接 然而,在Azure虚拟机中,它通过了几次,然后失败了,为什么 我们在web浏览器中尝试: 然后查看结果,我们每秒单击刷新2分钟,

我建立了一个dll,如果我们有互联网,它会返回true,如果没有,它会返回false。 我们做了以下工作: 1.呼叫ping我们的服务器,如果失败,请尝试下一步 2.调用get http请求到我们的一个WCF API

这是在win服务中完成的

在PC和一些服务器(windows server 2k R2)中,它可以连续工作几天,没有问题,每2分钟我们就会醒来并测试连接

然而,在Azure虚拟机中,它通过了几次,然后失败了,为什么

我们在web浏览器中尝试: 然后查看结果,我们每秒单击刷新2分钟,并查看它从未失败

但是在我们的WinService中也做了同样的事情,几次失败后,启动get timeout

我们不知道为什么,看起来像防火墙,但为什么刷新时它不阻止浏览器

下面是我们在.Net中所做的:

      private static bool IsConnectedToInternetHttpRequest(string url = "http://db.OurDomainName.com/WCFService.svc/GetCurrentTimeUnixFormat")
        {

//GET http://db.OurDomainName.com/WCFService.svc/GetCurrentTimeUnixFormat HTTP/1.1
//Host: db.tako.com
//Connection: keep-alive
//Cache-Control: max-age=0
//Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
//User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
//Accept-Encoding: gzip,deflate,sdch
//Accept-Language: en-US,en;q=0.8

            try
            {
                var request = (HttpWebRequest)WebRequest.Create(url);
                request.Timeout = (int)new TimeSpan(0, 0, 30).TotalMilliseconds;
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36";
                request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Refresh);
                request.KeepAlive = true;

                var response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception )
            {
                return false;
            }
        }
public Contructor(){
System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged += new System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
}

private void NetworkChange_NetworkAvailabilityChanged(object sender, System.Net.NetworkInformation.NetworkAvailabilityEventArgs e)
        {

                if (e.IsAvailable)
                {
                    //connected
                }
                else
                {
                   //disconnected
                }

        }
[DllImport("wininet.dll", SetLastError = true)]
static extern bool InternetCheckConnection(string lpszUrl, int dwFlags, int dwReserved);

const int  FLAG_ICC_FORCE_CONNECTION = 1;
bool internetStatus = false;

if (InternetCheckConnection("http://www.google.com", FLAG_ICC_FORCE_CONNECTION, 0) ||
    InternetCheckConnection("http://www.microsoft.com", FLAG_ICC_FORCE_CONNECTION, 0) ||
    InternetCheckConnection("http://www.facebook.com", FLAG_ICC_FORCE_CONNECTION, 0))
{
   internetStatus = true;
}