У меня проблема с этим методом на моем маршрутизаторе / модеме 3g, потому что если интернет отключен, маршрутизатор перенаправляет страницу на свою страницу ответа, так что вы все равно получаете пар, а ваш код считает, что есть интернет. Яблоки (или другие) имеют страницу с горячей точкой, которая всегда возвращает определенный ответ. Следующий образец возвращает ответ «Успех». Таким образом, вы точно убедитесь, что сможете подключиться к Интернету и получить реальный ответ!
public static bool CheckForInternetConnection()
{
try
{
using (var webClient = new WebClient())
using (var stream = webClient.OpenRead("http://captive.apple.com/hotspot-detect.html"))
{
if (stream != null)
{
//return true;
stream.ReadTimeout = 1000;
using (var reader = new StreamReader(stream, Encoding.UTF8, false))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (line == "<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>")
{
return true;
}
Console.WriteLine(line);
}
}
}
return false;
}
}
catch
{
}
return false;
}
Столбцы INTEGER PRIMARY KEY в стороне, UNIQUE и PRIMARY KEY ограничения реализуются путем создания индекса в базе данных (в точно так же, как оператор CREATE UNIQUE INDEX). Такой index используется как любой другой индекс в базе данных для оптимизации запросы. В результате часто нет преимущества (но значительного накладные расходы) при создании индекса для набора столбцов, которые уже коллективно подчиняется ограничению UNIQUE или PRIMARY KEY.