0

IIS 統合要求処理パイプライン モードで実行されている IIS7 で HttpModule を使用して、ISAPI フィルターのような機能を実装したいと考えています。

目標は、Web サーバー レベルで着信要求を確認し、いくつかのカスタム HttpHeaders を要求に挿入することです。(for ex: HTTP\_EAUTH\_ID)

そして、ASPXページのページライフサイクルの後半で、その変数を次のように使用できるはずです

string eauthId = Request.ServerVariables["HTTP\_EAUTH\_ID"].ToString();

このモジュールを Web サーバー レベルで実装すると、ServerVariables コレクションを変更できますか??

4

3 に答える 3

3

HttpRequest.ServerVariablesプロパティは読み取り専用のコレクションです。したがって、それを直接変更することはできません。httpmodule からhttpcontext (またはグローバル アプリケーション オブジェクトまたはデータベース)にカスタム データを保存し、その共有値を aspx ページで読み取ることをお勧めします。

それでもサーバー変数を変更したい場合は、リフレクションを使用したこのスレッドで言及されているハック手法があります。

于 2008-09-13T17:52:30.547 に答える
0

サーバー変数リストには、ブラウザーからサーバーに送信されたヘッダーのみが含まれていると思います。

于 2008-09-13T17:07:38.093 に答える
0

HttpRequest.HeadersまたはHttpRequest.ServerVariablesコレクションを変更することはできません。ただし、次のいずれかに情報を追加できます。

HttpContext.Current.Items
HttpContext.Current.Response.Headers

残念ながら、Request.Params, Request.QueryString, Request.Cookies, Request.Form(そして、それを詰め込もうと考えている他のほとんどの場所は読み取り専用です。

これが IIS 7 へのインストールを計画している HttpModule である場合は、リフレクションを使用しないことを強くお勧めします。このコードが (潜在的に) Web サーバーを通過するすべての要求に対して呼び出されることを考えると、非常に高速である必要があり、リフレクションはそれをカットすることはできません (ユーザーが非常に少ない場合を除きます)。

幸運を!

于 2008-09-14T09:25:41.783 に答える