0

那麼我完全難住這一個。這裏是場景 asp.net mvc3 web應用程序,已經工作很好幾個月了,但我每週都會通過修補程序和新發布的新功能。代碼庫本身運行在兩個獨立的iis7 windows r2服務器上。其中一個服務器,我不使用標準的應用程序池身份(網絡服務) - 我有一個特定的用戶,因爲它從文件服務器拉出一些文件,因此需要特定的權限,從該目錄添加/刪除。asp.net mvc 3表單身份驗證和ie9

在這臺服務器上,它剛剛開始瘋狂地使用窗體身份驗證,在IE9中有99%的時間,一次或兩次我必須在chrome上完成它,但是chome/ff通常本身沒有問題。

問題是,只要您登錄並轉到另一個頁面,它會一直對移動的對象進行響應,然後再次重定向到登錄頁面。 (有時甚至做到這一點上登錄),但會議仍然是有效的,因爲作爲模板的一部分,它表明都基於具有用戶認證菜單項,與像

Context.User.IsInRole(xxxx) 
Request.IsAuthenticated 

我已經電話擺弄它,cookie會話似乎很好,一切都按照它應該設置。

但是,如果我做了一個完整的iisreset,ie9將工作大約5分鐘,那麼它只是失敗了每個請求,並重定向回登錄頁面。

我不是在所有的Web應用程序中使用的I幀,和我的web.config設置

<sessionState mode="InProc" timeout="80" /> 
<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="40" slidingExpiration="true" cookieless="UseCookies" /> 
</authentication> 

時間同步得到遏制,並且兩個客戶機和服務器是在1秒內彼此。

所以在這個階段,我被卡住了,我不知道要去哪裏進一步排查故障,或者其他我可以嘗試的東西。如果需要,我可以遠程調試服務器。

當我在我的開發箱本地測試時,我沒有看到任何問題。

感謝, 卡梅倫

回答

1

問題解決了。我將應用程序池的工作進程數量設置爲2,因此對於2個工作進程中的哪一個具有經過驗證的表單cookie /會話,這是一個幸運的下注。

更改回1,應用程序按預期工作。不過,我將完全重寫會話處理並存儲在數據庫中,因此我可以將此工作進程增加到4個以使應用程序更高效。

0

如果使用FormAuthenticationTicket,檢查以下。

FormsAuthenticationTicket authTicket = new 
          FormsAuthenticationTicket(1, //version 
          username, // user name 
          DateTime.Now,    //creation 
          DateTime.Now.AddDays(5), //<--- THIS Expiration 
          remember, //Persistent 
          userdata);