none
ASP.NET4.5でヘッダー送信後がどうか知る方法を知りたい RRS feed

  • 質問

  • お世話になります。

    .Net Framework 4.5のC#で作られたASP.NETの処理があるのですが、

    他社作成のため修正を入れる事のできない処理が先にHTTP ヘッダーを送信する事が時々あるようで、

    私が担当している処理でHTTP ヘッダー送信の処理があると時々例外エラーになると言う状況です。

    そのため、私の担当処理では、HTTP ヘッダーがすでに送信済みの場合、処理を行なわないと言う処理にする事に

    決まったのですが、HTTP ヘッダーがすでに送信済みか否かの判断方法がわからず困っております。

    判断方法を教えて頂けないでしょうか。

    以上、宜しくお願い致します。

    2018年3月7日 10:31

回答

  • .NET 4.5.2であればHttpResponse.HeadersWrittenプロパティが追加されているので、これを参照するだけです。

    その上で、.NET 4.5および.NET 4.5.1は2016/01にサポート終了しています。ASP.NETということは外部と通信する可能性も高いわけですし、セキュリティパッチ等が提供されなくなって2年も経過しているバージョンを使い続けるのは危険です。.NET 4.5.2に移行されてはどうでしょうか?

    • 回答としてマーク やきGO 2018年3月15日 9:15
    2018年3月9日 8:07

すべての返信

  • 対症療法的な話でよければ、もし質問者さんが HttpResponse.AppendHeader メソッドでヘッダを追加しているのであれば HttpException がスローされるはずなので、その一行を try 句で挟んで、catch 句で HttpException をキャッチして必要な処理を行うということを思いつきます。(思いつきレベルです)

    ここに書いてあること以外は知り得ない(すなわち、他社作成の処理がどういうタイミングでどのようにヘッダを追加して送信してしまうのか分からないし、質問者さんがどのタイミングでどのようにヘッダを送信するのかも知り得ない)第三者が、対症療法を超えた的確な回答をするのは難しい(と言うより無理)と思います。

    その「他社」に対策を聞いてみましたか? ここで聞くより先に、まずそれを一番にすべきだと思うのですが。 

    2018年3月8日 2:41
  • .NET 4.5.2であればHttpResponse.HeadersWrittenプロパティが追加されているので、これを参照するだけです。

    その上で、.NET 4.5および.NET 4.5.1は2016/01にサポート終了しています。ASP.NETということは外部と通信する可能性も高いわけですし、セキュリティパッチ等が提供されなくなって2年も経過しているバージョンを使い続けるのは危険です。.NET 4.5.2に移行されてはどうでしょうか?

    • 回答としてマーク やきGO 2018年3月15日 9:15
    2018年3月9日 8:07