2012-08-06 51 views
0

我們有一個需要cookie才能啓動的aspx頁面。在重定向到該頁面之前,我們創建了cookie,並在響應中給出了該cookie,然後重定向到該頁面。未在IE和Chrome上創建Cookie

Form form = new Form { 
      FormID = dalObject.FormID, 
      PageName = dalObject.PageName, 
      ViewPageName = dalObject.ViewPageName }; 

     HttpCookie cookie = new HttpCookie("FormCookie"); 
     cookie.Expires = DateTime.Now.AddMinutes(1); 

     if (dalObject.FormID==(int)Forms.SP_APP_FORM) 
     { 
      cookie.Values.Add("ApplicationRepositoryID",GetEncryptedToken(applicationRepositoryID.ToString())); 
      cookie.Values.Add("UserDirectoryID", GetEncryptedToken(userDirectoryID.ToString())); 
      cookie.Values.Add("FormID", GetEncryptedToken(dalObject.FormID.ToString())); 

      if (applicationFormID.HasValue) 
       cookie.Values.Add("ApplicationFormID", GetEncryptedToken(applicationFormID.ToString())); 
     } 
     form.PageCookie = cookie; 
     return form; 

的問題是,在開發環境中它工作得很好,它在生產工作過(他們的),但是,如果我們試圖在生產現場,這是行不通的(從我們的開發計算機) 。我們懷疑該cookie不會被創建。這發生在3臺計算機中的2臺上。在其中一個它正在工作。 我們嘗試刪除Cookie,清除緩存但沒有結果。

任何想法? 謝謝

+0

您是否100%確定這些機器上啓用了Cookie?要檢入Chrome,請轉到設置>高級>內容設置> Cookie – westo 2012-08-06 12:55:59

+0

是的,啓用了Cookie的 – bokkie 2012-08-06 13:07:53

回答

0

我以前在我們的網站上看到過這個。在我們的例子中,客戶端和服務器時鐘顯着不同步。服務器設置到期時間,客戶端根據自己的時鐘檢查它,如果它超過(在你的情況下)一分鐘太快,那麼它立即到期。

我們將cookie的失效設置得更遠(比如說一個星期或一個月),然後只對服務器進行檢查(因爲它應該檢查自身)。基本上,我們向cookie添加了附加數據(手動過期時間),服務器可以使用它來執行檢查。如果您的清算過期(您設置了一分鐘),服務器將刪除(並忽略)它發送的Cookie。

我不知道這是否是問題的最佳解決方案,但它對我們有效。

順便說一句,我們只在IE上發現了這個問題。

+0

正確,但是在我們的一臺開發機器上,使用相同的lan(我們具有相同的日期時間),它可以工作,它不... – bokkie 2012-08-06 13:07:30