Что вызывает System.Web.HttpException с кодом ошибки 0x80070057 на Page.Flush при отладке в VS2005?

Вот полное сообщение об ошибке:

Исключение типа System.Web.HttpException произошло в System.Web.dll, но не было обработано в пользовательском коде.

Дополнительная информация: удаленный хост закрыл соединение. Код ошибки - 0x80070057.

и код нарушения:

 char[] buffer = oPage.HTML.HTML.ToCharArray();
 Page.Response.Write(buffer, 0, buffer.Length);
 Page.Response.Flush();
 Page.Response.End();

OPage.HTML.HTML - это строка в настраиваемом объекте страницы, используемом нашим приложением. Исключение запускается на Page.Flush () и кажется безобидным - я просто нажимаю «продолжить», и все идет нормально. Это никогда не появляется во время выполнения.

Я погнался за многими, многими поисками Google в кроличьи норы и ничего не нашел. Visual Studio 2005, Vista Ultimate (IIS7).

Ответов (1)

Решение

Я уже некоторое время сталкиваюсь с этой же ошибкой, и я понимаю, что при вызове Flush на другом конце должно быть соединение, в противном случае возникает эта ошибка. Это легко попасть в «огонь и забыть» вид модели при написании веб - страниц, но когда клиент отключается (в данном случае отладки, вы клиент), нет нигде флеша к .

Я нашел два решения:

  1. Оберните Response.Flush и перехватите исключение.
  2. Перед вызовом flush проверьте Response.IsClientConnected.

Насчет второго я не уверен на 100% ... Я все еще проверяю его.

Удачи!