Периодически вызывать от клиента к серверу, а если нет ответа или не ожидаете ответа - покажите сообщение об ошибке.
для веб-формы: создать обработчик с РЕАЛИЗАЦИИ из ProcessRequest
, как это:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Ok");
}
для MVC: создать действие с простой результат:
public ActionResult CheckInternetConnection()
{
return Json("Ok");
}
конечно , эти обработчики запросов не должны требовать авторизации или другой предварительной обработки
затем создать JS timer
и метод запроса
var maxTime = <your interval time>;
var timer;
//write own method for check request
function performRequest() {
var xhr = new XMLHttpRequest();
// reserve 1 sec for timeout function execution
// if we didn't - you can get a situation when
// simultaneously performing more than 1 request
xhr.timeout = maxTime - 1000;
xhr.ontimeout = function {
//waiting to long
alert('<your message>');
window.clearInterval(timer);
};
xhr.open('GET', '<url of your check connection handler>', true);
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState != 4)
return;
if (xhr.responseText !== 'OK') {
//Can't access to handler
alert('<your message>');
window.clearInterval(timer);
}
}
}
//after page load start request timer
document.onload += function() {
timer = window.setInterval(performRequest, maxTime);
}
Я не отладить этот код.
Aehem. Сервер, который не найден, не может подключиться, означает, что браузеру не удалось подключиться к серверу. Итак, как сервер сможет отправить сообщение в браузер? – Thomas
Проверьте это: http://www.asp.net/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/displaying-a-custom-error-page-cs –
да. но есть ли способ показать это сообщение из кеша? – deepak