2011-06-14 45 views
5

我建立一個.NET的Web應用程序,並使用窗體身份驗證與cookies要記住,如果用戶在簽署或不重置IIS:身份驗證的用戶後,.NET

<authentication mode="Forms"> 
    <forms timeout="4320" cookieless="UseCookies" loginUrl="~/account.aspx" name="test" slidingExpiration="true" /> 
</authentication> 

但是,建設,改變後web.config或執行IIS重置,我加載的第一頁顯示我沒有登錄。但是,如果我再次刷新頁面,則會顯示我已登錄,即使我沒有做任何事情。

所以它似乎記得我登錄了,但只在第一頁加載後。

那是平常的嗎?我在web.config中配置錯了嗎?這僅僅是一個本地主機問題嗎?

+1

有趣的一個。你使用正常的asp.net webforms? CodeBehind中是否有IsPostBack邏輯? – christofr 2011-06-14 13:34:21

+0

服務器反彈後,cookie仍然有效是正常的。第一頁不起作用並不正常。 – 2011-06-14 13:35:36

+0

你在另一臺機器上試過這個嗎? – Matt 2011-06-14 13:44:52

回答

4

好的,這當然是我自己的骨頭缺陷。發現在我的web.config我有設置:

<appSettings configSource="appSettings.config" /> 

問題是appSettings.config在我的項目中不存在。在我刪除了這一行(它來自樣板代碼並且不需要它)之後,它找到了。

顯然在第一次加載時.net對這個文件不感興趣,因爲它第一次加載配置文件,但在第一次加載之後,它不再在意了(這就像技術性的我可以得到)。

1

問題是會話被重置。雖然你有cookie,但你需要做更多的事情。

在您的驗證用戶部分,確保記得我的設置被選中,即

FormsAuthentication.RedirectFromLoginPage ("TheirUserId", Persist.Checked) 

它,你需要確保是真Persist.Checked。請參閱http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx以獲取更多信息