Response.End()は有害と見なされますか?

Cheeso

このKB記事には、ASP.NETResponse.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()実行されません。これは驚き最小の原則に違反します。これApplication.Exit()は、WinFormsアプリの場合とほとんど同じです。によって引き起こされるスレッドアボート例外Response.End()はキャッチできないため、コードをtry...で囲むfinallyと満足できません。

常に避けるべきかどうか疑問に思いResponse.End()ます。

Response.End()いつResponse.Close()、いつ、いつ使用すべきか、誰かが提案できますHttpContext.Current.ApplicationInstance.CompleteRequest()か?

ref:RickStrahlのブログエントリ


私が受け取った入力に基づいて、私の答えは、はい、Response.End有害ですが、それはいくつかの限られた場合に役立ちます。

  • Response.End()キャッチできないスローとして使用してHttpResponse、例外的な状況ですぐに終了します。デバッグ中にも役立ちます。日常的な応答を完了することは避けてくださいResponse.End()
  • Response.Close()クライアントとの接続をすぐに閉じるために使用します。パーこのMSDNのブログの記事、この方法は、通常のHTTPリクエストを処理するためのものではありません。このメソッドを呼び出す正当な理由がある可能性はほとんどありません。
  • CompleteRequest()通常のリクエストを終了するために使用します。現在のイベントが完了したCompleteRequest、ASP.NETパイプラインがEndRequestイベントにジャンプHttpApplicationします。したがって、を呼び出してCompleteRequestから、応答にさらに何かを書き込むと、書き込みはクライアントに送信されます。

編集-2011年4月13日

また、透明度がここにあります:
- MSDNブログに便利なポスト
-ジョン・リードによって便利な分析

スポウルソン

アプリで例外ロガーを使用していた場合はThreadAbortException、これらの無害なResponse.End()呼び出しからsで水が減ります。これがマイクロソフトの「ノックオフ!」という言い方だと思います。

Response.End()例外的な状態があり、他のアクションが不可能な場合にのみ使用しますたぶん、この例外をログに記録すると、実際には警告が示される可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

明示的なserialVersionUIDは有害と見なされますか?

分類Dev

instanceofは有害と見なされますか?

分類Dev

File.Existsは有害と見なされますか?

分類Dev

org.hibernate.Session.clear()は有害と見なされますか?

分類Dev

連鎖発生器は有害と見なされますか?

分類Dev

jQueryでコードを垂直に並べることは有害と見なされますか?

分類Dev

JavaScriptの「新しい」キーワードは有害と見なされますか?

分類Dev

SELECT *が有害であると見なされるのはなぜですか?

分類Dev

IDの悪用は、有害と見なされるステートメントの「使用」から利益を得る可能性がありますか?

分類Dev

ASTを構築するための非合法のモノイドインスタンスは有害とは見なされませんか?

分類Dev

Rspec / Capybaraの読み込みが進行中、循環には有害と見なされる必要があります

分類Dev

ダウンロードはEdgeブラウザで有害なものとして表示されます

分類Dev

GOTOはまだ有害だと考えていますか?

分類Dev

GOTOはまだ有害だと考えていますか?

分類Dev

GOTOはまだ有害だと考えていますか?

分類Dev

メインを友人として宣言することは有害だと考えられていますか?

分類Dev

Thread.Sleepがとても有害なのはなぜですか

分類Dev

このresponse.end(callback)が2回呼び出されるのはなぜですか?

分類Dev

有害なUSBスティックストールの問題。14.04で修正されていますか?

分類Dev

jsp:includeからのresponse.sendRedirect()は無視されますか?

分類Dev

ps -ef は kerneloops を表示します - それは有害ですか?

分類Dev

単純に有害であると見なされる:アキュムレータブロー(グローバル)スタックを使用したProlog述語ですが、単純なバージョンはそうではありません

分類Dev

Dialogflowで指定されたRAWAPI RESPONSEとして応答が得られないのはなぜですか?

分類Dev

node.jsでresponse.end()を使用してresponse.end()を返すのはなぜですか?

分類Dev

url.openStreamは有害ですか?

分類Dev

response.xpathとresponse.cssの違いは何ですか

分類Dev

response.setIntHeader()関数が実行されないのはなぜですか?

分類Dev

ブート修復はSFSが検出されたと言っているので、続行しても安全ですか、それとも有害ですか?

分類Dev

ブート修復はSFSが検出されたと言っているので、続行しても安全ですか、それとも有害ですか?

Related 関連記事

  1. 1

    明示的なserialVersionUIDは有害と見なされますか?

  2. 2

    instanceofは有害と見なされますか?

  3. 3

    File.Existsは有害と見なされますか?

  4. 4

    org.hibernate.Session.clear()は有害と見なされますか?

  5. 5

    連鎖発生器は有害と見なされますか?

  6. 6

    jQueryでコードを垂直に並べることは有害と見なされますか?

  7. 7

    JavaScriptの「新しい」キーワードは有害と見なされますか?

  8. 8

    SELECT *が有害であると見なされるのはなぜですか?

  9. 9

    IDの悪用は、有害と見なされるステートメントの「使用」から利益を得る可能性がありますか?

  10. 10

    ASTを構築するための非合法のモノイドインスタンスは有害とは見なされませんか?

  11. 11

    Rspec / Capybaraの読み込みが進行中、循環には有害と見なされる必要があります

  12. 12

    ダウンロードはEdgeブラウザで有害なものとして表示されます

  13. 13

    GOTOはまだ有害だと考えていますか?

  14. 14

    GOTOはまだ有害だと考えていますか?

  15. 15

    GOTOはまだ有害だと考えていますか?

  16. 16

    メインを友人として宣言することは有害だと考えられていますか?

  17. 17

    Thread.Sleepがとても有害なのはなぜですか

  18. 18

    このresponse.end(callback)が2回呼び出されるのはなぜですか?

  19. 19

    有害なUSBスティックストールの問題。14.04で修正されていますか?

  20. 20

    jsp:includeからのresponse.sendRedirect()は無視されますか?

  21. 21

    ps -ef は kerneloops を表示します - それは有害ですか?

  22. 22

    単純に有害であると見なされる:アキュムレータブロー(グローバル)スタックを使用したProlog述語ですが、単純なバージョンはそうではありません

  23. 23

    Dialogflowで指定されたRAWAPI RESPONSEとして応答が得られないのはなぜですか?

  24. 24

    node.jsでresponse.end()を使用してresponse.end()を返すのはなぜですか?

  25. 25

    url.openStreamは有害ですか?

  26. 26

    response.xpathとresponse.cssの違いは何ですか

  27. 27

    response.setIntHeader()関数が実行されないのはなぜですか?

  28. 28

    ブート修復はSFSが検出されたと言っているので、続行しても安全ですか、それとも有害ですか?

  29. 29

    ブート修復はSFSが検出されたと言っているので、続行しても安全ですか、それとも有害ですか?

ホットタグ

アーカイブ