我有一個網站,爲了正常工作,需要將XML文件附加到它的所有URL,我們假設該文件被稱爲module-1.xml
。從IHttpModule的OnBeginRequest方法訪問會話變量
爲了保持這些URLS乾淨,我寫了一個IHttpModule,它使用HttpContext.Current.RewritePath
在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
切換到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");
}
}
From what I have found,會話可以在模塊內被訪問但 不從OnBeginRequest
事件這是唯一的事件,其中內部可以使功能化(至少從我一直在做的所有測試中)。
我的假設是否正確?如果是,我可以使用什麼替代方案?創建一個自定義的Session變量?我應該從txt文件還是從數據庫讀取數據,以瞭解用戶正在查看的模塊?我如何跟蹤模塊內的用戶?
好主意,謝謝! – jdecuyper