適切に機能するために、すべての URL に XML ファイルを追加する必要がある Web サイトがあります。たとえば、ファイルの名前はmodule-1.xml
.
これらの URL をきれいに保つために、 を使用してイベントHttpContext.Current.RewritePath
内で追加ジョブを実行する IHttpModule を作成しました。OnBeginRequest
IHttpModule は非常にシンプルに見え、機能します。
public void OnBeginRequest(Object s, EventArgs e)
{
string url = HttpContext.Current.Request.Url.AbsolutePath;
if (url.EndsWith(".aspx"))
HttpContext.Current.RewritePath(url + "?module-1.xml");
}
model-1.xml
ここで、セッション変数を使用して、ユーザーが Web サイトを からに切り替えることを決定したことを検出しmodel-2.xml
、コードを次のように変更したいと考えました。
public void OnBeginRequest(Object s, EventArgs e)
{
string url = HttpContext.Current.Request.Url.AbsolutePath;
if (url.EndsWith(".aspx"))
{
if (HttpContext.Current.Session["CurrentMode"] == "1")
HttpContext.Current.RewritePath(url + "?module-1.xml");
else if(HttpContext.Current.Session["CurrentMode"] == "2")
HttpContext.Current.RewritePath(url + "?module-2.xml");
}
}
私が見つけたものから、セッションはモジュール内でアクセスできますが、機能させることOnBeginRequest
ができる唯一のイベントであるイベント内からはアクセスできませんHttpContext.Current.RewritePath
(少なくとも私が行ってきたすべてのテストから)。
私の仮定は正しいですか?もしそうなら、どのような代替手段を使用できますか? カスタム セッション変数を作成しますか? ユーザーが見ているモジュールを知るために、txt ファイルまたは DB から読み取る必要がありますか? モジュール内からユーザーを追跡するにはどうすればよいですか?