我正在编写一个旨在联机和脱机工作的Windows Phone 8应用程序。要做到这一点,它需要能够检查互联网连接。这没问题,如果没有连接,或者有连接,但如果用户连接到一个wifi热点,但他们没有通过身份验证,那么我需要返回一个“无连接”状态。但是,即使尝试捕获,似乎也无法使用WebClient或HttpWebRequest捕获System.Net.WebException错误。我搜索了解决方案,但似乎没有工作 - 任何帮助,将不胜感激。Windows Phone 8连接检查WebClient抛出可怕System.Net.WebException
这里是我的连接校验码:
public async Task<bool> tskbooCheckConnectionSimpleNoQueue()
{
bool booHasConnection = false;
bool isNetwork = NetworkInterface.GetIsNetworkAvailable();
if (!isNetwork)
{
booHasConnection = false;
IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = false;
return booHasConnection;
}
else
{
//actually check connection
WebClient wcConnectionCheck = new WebClient();
string strData = "";
string strConnectionCheck = "https://urltocheckconnection.com/connectioncheckmethod";
try
{
strData = await wcConnectionCheck.DownloadStringTaskAsync(new Uri(strConnectionCheck)); //exception thrown here
if (strData.ToString().Contains("success"))
{
booHasConnection = true;
IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = true;
return booHasConnection;
}
else
{
booHasConnection = false;
IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = false;
return booHasConnection;
}
}
catch (WebException ex)
{
booHasConnection = false;
IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = false;
return booHasConnection;
}
}
}
该代码看起来对我来说很合适。你确定没有其他的异常类型被抛出吗? –
是的,如果你有一个连接,代码工作正常,但如果它不能连接,那么它会抛出System.Net.WebException“Not Found”。实际发生的情况是WiFi代理重定向任何流量,因此无法解析服务URL,因此无法找到。这很好,但我只需要能够处理它! – James
你是否检查过疯狂的东西,比如你的catch中的'WebException'解析为本地类型而不是'System.Net.WebException'? –