在 IIS 中,如何設定不同 Session ID ?

本篇要記錄如何在 IIS Web Server 中,相同 domain 下不同目錄的應用程式能產生不同 Session ID,這個 topic 是源自於某些狀況,需要在同一個 domain 下 run 一個系統(程式)的多個 instances 時,解決相同的 session variable name 造成混淆的 issue。

Classic ASP 的解法:

"不同 instances 設定成不同虛擬目錄"

在實體目錄中,即便有著相同的目錄命稱時(例如:/public_html/app1),只要將虛擬目錄別名設定成 app1,路徑指向 /public_html/app1,在存取時就會以另一個應用程式去執行內容,如果在/public_html/ 下面有 app1, app2, app3, ... 都設定成各別的虛擬目錄,當存取時就會有各自的 ASPSESSIONID,不會因為都在/public_html/ 下面造成 session variable 混在一起。

PHP 的解法:

"不同 instances 設定不同的 session.cookie_path"

只要在各別的 instances 中,透過 session_set_cookie_params() 設定各別的 path (對應到 app 的目錄,例如 /app1, /app2, /app3,要注意這是參照 URI 不是實體路徑),就會產生不同的 PHPSESSID。

總結:

Classic ASP 的部分由於 ASPSESSIONID 的設定無法從程式面去改,只好從 IIS 著手,因此需要權限比較高,所以蠻麻煩的。

至於 ASP.Net 是否有相同的 issue 就不知道了,還沒研究過,以後有閒的時候再研究看看。

public_html

分類: Web technology, 軟體開發,標籤: , , 。這篇內容的永久連結