2011-05-03 127 views
2

我在IIS7上部署了兩個Web應用程序。IIS生成相同的Session.SessionID

問題是,如果我使用相同的瀏覽器(不同的選項卡)請求兩個應用程序,IIS會生成相同的Session.SessionID。

這是ASP.Net用戶身份驗證導致的一些問題,它是一些如何相互重疊和標誌「User.Identity.IsAuthenticated」返回false每當用戶登錄到其他網站。只要用戶在其中一個站點上工作,它就可以正常工作。

請幫助我,我似乎無法找到原因,我的意思是會話是特定於應用程序,所以爲什麼來自一個Web應用程序的sessionID與另一個衝突。

感謝

回答

3

它們在同一應用程序池運行。只需分開應用程序池。


問題是您的瀏覽器正在處理這些應用程序相同。 ASP.NET中的會話由會話cookie執行。這些需要有不同的網站名稱,以便它們不共享相同的會話。


UPDATE

這是會話cookie是如何工作的。

但一種解決方案是將它們作爲mysite.com/1mysite.com/2訪問。我相信也應該起作用。

+0

當我更新時,您需要爲他們設置不同的網站名稱。使用不同的網站名稱訪問它們,例如'app1.mysite.com'和'app2.mysite.com' – Aliostad 2011-05-03 11:26:22

+0

網站名稱與完全不同的域名一樣?比如www.x.com和www.x.com/2不起作用? – Ali 2011-05-03 11:27:52

+0

不,它不會工作,雖然它可以在條件下。會話cookie是爲網站設置的。你只需要用提琴檢查cookies來看看有什麼值。 – Aliostad 2011-05-03 11:28:59

0

您是否檢查過應用程序池,如果要隔離Web應用程序,則應定義不同的應用程序池。

0

是否每個應用程序都在單獨的IIS應用程序中運行?如果它們是,那麼會話將是分開的,因爲會話的範圍是AppDomain。如果它們位於相同的IIS應用程序中,則它們將加載到相同的AppDomain中,並共享Session。

在相同的瀏覽器會話中(不管使用製表符),將發送相同的Session cookie。

+0

嗨我有一個問題,因爲這兩個網站都在相同的IIS應用程序下定義。是否有可能通過在web.config中指定不同的sessionName或指定不同的機器密鑰來隔離這兩個網站的會話? – desiguy 2014-08-12 15:03:34