第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Response.End()是否被認為是有害的?

Response.End()是否被認為是有害的?

牧羊人nacy 2019-06-17 15:49:35
Response.End()是否被認為是有害的?這篇KB文章說ASP.NET的Response.End()中止線程。反光鏡顯示它看起來是這樣的:public void End(){     if (this._context.IsInCancellablePeriod)     {         InternalSecurityPermissions.ControlThread.Assert();         Thread.CurrentThread.Abort(new HttpApplication.CancelModuleException(false));     }     else if (!this._flushing)     {         this.Flush();         this._ended = true;         if (this._context.ApplicationInstance != null)         {             this._context.ApplicationInstance.CompleteRequest();         }     }}這對我來說很殘酷。如KB文章所述,應用程序中的任何代碼如下Response.End()不會被執(zhí)行,這違反了最不驚訝的原則。就像Application.Exit()在WinForms應用程序中。引發(fā)的線程中止異常。Response.End()是不可捕捉的,因此將代碼包圍在try...finally不會滿足的。這讓我想知道我是否應該總是避免Response.End().有人能建議我什么時候使用Response.End(),何時Response.Close()什么時候HttpContext.Current.ApplicationInstance.CompleteRequest()?參考文獻:里克·斯特拉的博客.根據(jù)我收到的信息,我的回答是,是,Response.End是有害的,但在某些有限的情況下是有用的。使用Response.End()作為不可捕獲的拋出,立即終止HttpResponse在特殊情況下。在調(diào)試過程中也會很有用。避Response.End()完成例行反應.使用Response.Close()立即關閉與客戶端的連接。每這篇MSDN博客文章,這種方法不適用于正常的HTTP請求處理。您不太可能有充分的理由調(diào)用此方法。使用CompleteRequest()結(jié)束正常的請求。CompleteRequest使ASP.NET管道跳轉(zhuǎn)到EndRequest事件之后的HttpApplication事件完成。所以如果你打電話CompleteRequest,然后向響應寫入更多內(nèi)容,寫將被發(fā)送到客戶端。
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻1789條經(jīng)驗 獲得超8個贊

如果您在應用程序上使用了異常記錄器,它將使用ThreadAbortException從這些良性的Response.End()打電話。我認為這是微軟的說法“別說了!”

我只會用Response.End()如果有一些特殊情況,沒有其他行動是可能的。也許這樣的話,記錄這個異常可能實際上表示了一個警告。


查看完整回答
反對 回復 2019-06-17
?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

這個問題出現(xiàn)在Google搜索Response.end信息的頂部,所以對于像我這樣希望發(fā)布CSV/XML/PDF等響應事件而不呈現(xiàn)整個ASPX頁面的其他搜索,我就是這樣做的。(覆蓋呈現(xiàn)方法對于這樣簡單的任務過于復雜,海事組織)

// Add headers for a csv file or whateverResponse.ContentType = "text/csv"Response.AddHeader("Content-Disposition", "attachment;
filename=report.csv")Response.AddHeader("Pragma", "no-cache")Response.AddHeader("Cache-Control", "no-cache")
// Write the data as binary from a unicode stringDim buffer As Byte()buffer = System.Text.Encoding.Unicode.GetBytes(csv)Response
.BinaryWrite(buffer)// Sends the response bufferResponse.Flush()// Prevents any other content from being sent to the browser
Response.SuppressContent = True// Directs the thread to finish, bypassing additional processingHttpContext.Current.ApplicationInstan
ce.CompleteRequest()


查看完整回答
反對 回復 2019-06-17
  • 3 回答
  • 0 關注
  • 916 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號