двойной тип содержимого ответа asp.net - PullRequest
0 голосов
/ 03 ноября 2011

Я отправляю большое количество данных контента Excel в браузер, используя Page.Response.Write ("") в цикле for.

перед началом цикла я изменяю conetnt тип ответаСвойство .context для ms-excel.

Если у меня возникла исключительная ситуация во время цикла for, я пытаюсь вызвать сообщение об ошибке в браузере, зарегистрировав блок сценария запуска HTML и записав его в браузер.перед записью я изменяю тип содержимого обратно на text / html.но я получаю сообщение об ошибке, в котором говорится, что невозможно изменить тип содержимого после отправки заголовков HTTP.

Как уведомить браузер об ошибке, возникшей во время цикла for?Можно ли иметь более одного респондента на одной вкладке браузера?Кстати, сейчас я не хочу использовать ASP.NET AJAX.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

Page.Response.Write ("") отправит данные в браузер. Когда вы делаете это, браузер должен знать тип контента, который он получает, чтобы сделать его правильным. Если вы уже сообщили браузеру, какой у вас контент (и даже если вы этого не сделаете, вы уже отправляете данные с помощью Response.Write, он будет использовать значение по умолчанию, которое я считаю text / html), тогда вы не сможете забери это обратно. Все, что вы говорите клиенту, сказано, и вы не можете забрать это обратно. Способ решения вашей проблемы - кэшировать ответ, предложенный Doozer.

/ Тиби

0 голосов
/ 03 ноября 2011

Пробовали ли вы Response.ClearHeaders(); перед изменением типа контекста?

Если это не сработает из-за того, что ваш Response.Write вызывает проблемы, вы можете подумать о маршруте построения строки, прежде чем принять решение отип содержимого, а затем установка заголовков.

  • Цикл по содержимому и добавление в StringBuilder
  • Если ошибок нет, установите для typetype значение ms-excel и выведите SB
  • Если есть ошибка, оставьте contenttype в том виде, в котором он есть, запишите свое сообщение об ошибке, если это необходимо.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...