2014-09-05 5 views
1

в global.asax для измерения времени выполнения запроса в onbeginrequest (запуск секундомера) и onendrequest (вычислите разницу).response.write пишет после закрытия тега html, как вместо этого заменить строку из ответа внутри html?

, а затем в конце запроса сделать response.write с результатом.

однако он записывает результат ПОСЛЕ закрытия тега html.в основном добавляет к концу.

текущей строки кода:

HttpContext.Current.Response.Write(elapsedTime); 

есть простой способ для записи ответов на ЗАМЕНЫ строку :: actualResult :: в пределах фактического HTML с фактическим результатом строки из записи ответа ?

Я пробовал много вещей, включая поиск в Интернете, но, похоже, никто не нуждается в этом, или я сосать при поиске. я думал, что я мог бы просто получить весь ответ как-то и заменить оттуда, но не знаете, как сделать это ... что-то вдоль ...Response.GetTheEnitreResponse??.Replace ... конечно, это просто выдавать желаемое за действительное;)

Thnx

ответ

0

Вы Ждут» t укажите, были ли вы использованы веб-формы, MVC, веб-страницы и т. д., но, как правило, эти фреймворки буферизуют ответ, который был выведен на любой странице, на которую нажимает пользователь. Ваш код в onendrequest приходит на вечеринку после того, как все содержимое страницы (обычно закрытое с закрывающим тегом html) было выведено в буфер. Поэтому, когда вы выполняете Response.Write, вы добавляете к этому html, поэтому он находится за пределами закрывающего тега html.

Если вы хотите, чтобы время было визуально на странице, вам нужно будет проанализировать ответ и ввести строку. Это выглядит сложным для вне класса страницы в ASP.NET.

Беспощадно, и есть лучшие альтернативы. Tracing, как правило, обрабатываются этими типами вещей.

Возможно, вы захотите рассмотреть эту информацию на трассе Glimpse или каким-то образом подключиться к ее дисплею ... Я не могу сказать достаточно о Glimpse.

+0

это кстати .. MVC – b0x0rz

+0

Если вы хотите, чтобы время было визуально на странице, вам нужно будет проанализировать ответ и ввести строку. Это выглядит сложным для вне класса страницы в ASP.NET. << точно lol поэтому мой вопрос;) – b0x0rz

+1

Я чувствую вас, я просто пытался предложить альтернативы, так как нелегко делать то, что вы хотите. Не для слабонервных, но я нашел статью блогера-постановщика Рика Стралла, которая может дать вам несколько идей: http://weblog.west-wind.com/posts/2009/Nov/13/Capturing-and-Transforming-ASPNET -Output-with-ResponseFilter – JasonCoder

0

Вместо того, чтобы писать истекшее значение для ответа, вы можете сохранить результат в HttpContext.Items, а затем получить доступ к этому на вид/страницы:

HttpContext.Current.Items.Add("elapsed", elapsed); 

HttpContext.Items Property

+0

извините, но нет. Я попробовал это. проблема в том, что страница уже выполняется, когда конец запроса запускается, и поэтому он не работает. – b0x0rz

+1

@ b0x0rz Хорошо, вы можете посмотреть на http: // miniprofiler.com /, это даст вам больше возможностей для того, что вы просматриваете в течение всего срока службы запроса, и позволяете вам иметь разбивку того, что время расходуется и где. –