После того, как вы выбрали страницу, слишком поздно отправить перенаправление: ответ уже отправлен, поэтому объект ответа у вас уже недействителен.
Вместо этого, вы должны будете иметь дело с ним или в стороне клиента код сценария с чем-то вроде
window.setTimeout(function() { window.location.href = "blah.aspx"; }, 9000);
или установив Refresh
заголовок в ответ сказать, на стороне клиента, что это будет необходимо в это время загрузите другую страницу.
Кроме того, создание экземпляра Timer
изнутри такой страницы, вероятно, является плохими идеями - помимо того факта, что он содержит недопустимый объект ответа, таймер будет висели, даже если посетитель закрывает страницу, и это довольно дорогостоящий объект с точки зрения системных ресурсов.
С другой стороны, если вы просто хотите, чтобы проверить, что условие в фоновом режиме, настроить таймер в global.asax
от вашего Application_OnStart
события и он обновляет volatile
булеву переменную; проверьте эту переменную в начале страницы, которую вы хотите условно перенаправить.
EDIT: Если вы хотите, чтобы условие проверяется для каждого открытого окна в любом браузере с указанием страницы, вам придется использовать либо сценариев или Refresh
. Это может быть проще иметь таймер JavaScript интервала периодически пытаться перейти на специальную страницу «условно отводящей», которые состоят только из следующего кода, который проверяет состояние и либо перенаправляет или покидает страницу в одиночку:
<%
if (db.getvalue()) // saying "== true" is redundant
response.Redirect("abc.aspx");
else
response.StatusCode = HttpStatusCode.NoContent;
%>
Примечания что переход к URL-адресу, который возвращает 204 «Без содержимого», заставляет браузер оставлять только существующую страницу. Кроме того, имейте в виду, что эта страница редиректора будет сильно подвергнута бомбардировке, поэтому держите ваш чек легким.
Возможно, db.getvalue() является ложным? – Greg 2010-12-08 06:46:11
Уточните вопрос: у вас есть страница и таймер в фоновом режиме, который не имеет отношения к посетителю. Страница будет обслуживаться в обычном режиме. Когда идет обратный отсчет таймера, вы хотите начать перенаправление посетителей с этой страницы на другую страницу. ЭТО ВЕРНО? – Poni 2010-12-08 06:48:43
@poni: Да, у меня почти такой же сценарий. так что я должен делать в этом случае. – 2010-12-08 06:50:56