Я хочу иметь возможность выводить простую строку как текст, а не HTML-страницу, когда выполняется набор критериев. Я в настоящее время использую:Как вывести строку вместо HTML-страницы?
Protected Sub OutputString(ByVal Str As String)
Dim bytes() As Byte
bytes = System.Text.Encoding.UTF8.GetBytes(Str)
Response.ContentType = "text/plain"
Response.OutputStream.Write(bytes, 0, bytes.Length)
Response.End()
End Sub
Это прекрасно работает и делает именно то, что я хочу, однако, Response.End() генерирует исключения и (я считаю) следует избегать, где это возможно.
Я полагаю, что для этого кода я мог бы использовать отдельную «пустую» страницу, но это скорее работа, чем решение. Кроме того, кто-то сказал что-то о превышении поведения вывода HTML (не могу вспомнить, где сейчас).
Буду очень признателен, если кто-то скажет мне лучший способ.
UPDATE: Я нашел эту ссылку: Response.Redirect(url) ThreadAbortException Solution
Он рекомендует использовать HttpContext.Current.ApplicationInstance.CompleteRequest() и над верхом функции, которые делают страницу:
Dim DoNotOutputHTML As Boolean = False
Protected Overrides Sub RaisePostBackEvent(sourceControl As IPostBackEventHandler, eventArgument As String)
If DoNotOutputHTML = False Then
MyBase.RaisePostBackEvent(sourceControl, eventArgument)
End If
End Sub
Protected Overrides Sub Render(writer As HtmlTextWriter)
If DoNotOutputHTML = False Then
MyBase.Render(writer)
End If
End Sub
You затем может выбрать, выводить ли вашу html-страницу, устанавливая переменную DoNotOutputHTML.
Единственная проблема, с которой я столкнулся, заключается в том, что любой код после выполнения CompleteRequest() все еще выполняется. Я могу обойти это, отредактировав свой код, хотя он был бы более аккуратным (менее, если/else блоки), если бы мне не пришлось, например, я не отвечаю.ответ()
Любые предложения?
Это не ответ на ваш вопрос, но я думаю, вы можете просто использовать 'Response.Write' вместо того, чтобы напрямую писать байты. – Ryan
Какие исключения вы получаете с помощью 'Response.End() '? –
@minitech Совершенно верно. Как я тупой? лол. Не знаю, почему я об этом не думал. – Gravitate