1

私はしばらくASP.NETMVCで作業していますが、それについて私を混乱させた1つのことは、HTTPヘッダーの変更に伴う困難です。ヘッダー( )を追加するのは簡単で、すべてのヘッダー( )を削除するのResponse.AppendHeader(...);は非常に(ほとんど)簡単ですしかし、個々のヘッダーの変更と削除に関しては、問題があります。Response.ClearHeaders();

Dictionary<string, string>httpヘッダーコレクションが(本質的に)応答ストリームに書き込まれる単純なもの以上である背後にある技術的な理由は何ですか?すべてを削除するのは簡単ですが、個人を削除することは不可能なのはなぜですか?

-サーバー上での実行(IIS 7、統合パイプラインモードを使用)だけでなく、開発中(Cassiniを使用)にも関心があります。

4

1 に答える 1

0

.Net Framwork 3.0、IIS 7.0 /統合モードの場合:

ご覧のとおり、

Response

オブジェクトには

Headers

NameValueCollectionとして入力されたプロパティ(このタイプが正確に選択された理由はわかりません) http://msdn.microsoft.com/en-us/library/system.web.httpresponse.headers

したがって、理論的には、これを使用して、質問で概説したように、応答にヘッダーを追加したり、応答からヘッダーを削除したりできます。

Response.AddHeaderソースコード(私はReflectorを使用しました)からわかるように、追加のチェックはほとんどありません。たとえば、「Flush」メソッドが呼び出された後にハンドラーを追加しようとすると、メソッドは例外をスローします(これは、考えれば正しい動作です)。Microsoftの連中がHeadersプロパティを公開した理由と、その背後にある考え方はわかりません。舞台裏には追加のロジックがあり、場合によってはプロセスが単純な配列アイテムの挿入に限定されないため、少なくとも保護する必要があると思います。

于 2012-05-22T22:16:10.063 に答える