我希望能夠輸出一個簡單的字符串作爲文本而不是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
你然後可以通過設置變量DoNotOutputHTML來選擇是否輸出您的html頁面。
我有這個唯一的問題是,(在CompleteRequest之後的任何代碼)仍執行。我可以解決此通過重組我的代碼,雖然這將是整潔(較少的if/else塊),如果我沒得,就像我不跟到Response.End()
有什麼建議?
這不是一個回答你的問題,但我認爲你可以使用'Response.Write',而不是直接寫入的字節數。 – Ryan
你用'Response.End() '得到了什麼異常? –
@minitech完全正確。我多麼愚蠢?大聲笑。不知道爲什麼我沒有想到這一點。 – Gravitate