2013-03-05 142 views
0

我正在嘗試使用SessionAuthenticationModule創建令牌並將其寫入Cookie而不是使用舊的FormAuthentication.SetAuthCookie。這樣我也可以向我的委託人添加索賠,並在每次請求時提供索賠。.NET 4.5 SessionAuthenticationModule

它可以在我自己的計算機上正常工作,但是當我部署到服務器時,出現此錯誤: 指定的參數超出了有效值的範圍。參數名:keyExpirationTime

來源:System.IdentityModel 堆棧跟蹤pointsto重載構造之一 - 它似乎已經從我原來的呼叫走過的TokenHandler,然後通過一對夫婦的構造函數來CreateSessionSecurityToken。

My SessionAuthenticationModule是我自己編寫的類,但派生自System.IdentityModel.Services.SessionAuthenticationModule並重寫OnPostAuthenticateRequest。

我發送DateTime.Now和DateTime.Now.AddMinutes(20)爲validFrom和validTo參數(在一個單獨的筆記,這可以是一個配置設置,如果是這樣? - 顯然我可以設置一個AppSetting的分鐘,但大概是有一個安全配置設置的地方?)

我已經搜索了這個錯誤信息,但無法找到任何提及它。

我已經使用FederationAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken也試圖HttpContext.Current.ApplicationInstance.Modules(「SessionAuthenticationModule」) - 我開發的機器上都工作,但在服務器上沒有工作。

服務器有Windows 2008 R2,我有Windows 7專業版。都有IIS 7.5.7600.16385。兩者都使用dotNetFx45_Full_setup.exe v4.5.50709.17929安裝.NET 4.5。 對於測試,我只使用默認網站下的虛擬應用程序,該應用程序使用集成管道的64位應用程序池,並且兩個應用程序池都在AppPoolIdentity下運行。

CreateSessionSecurityToken從sessionauthennticationmodule添加了聲明後執行的頁面調用。

這一定是相當簡單的事情,但我需要幫助搞清楚它是什麼!真的很感謝一些幫助。

感謝 菲爾

回答

3

所有樣品說: 「使用DateTime.UtcNow」,你可以試試嗎?您也可以將null粘貼到ValidTo以指定應通過將SessionSecurityTokenHandler.DefaultTokenLifetime屬性的值添加到validFrom參數指定的時間來確定值。

+0

謝謝 - 由於某種原因,我沒有收到回覆發送到我的電子郵件,所以只看到了這一點。事實證明,我工作了,但你是對的,UtcNow爲我工作 – user2047485 2013-03-15 11:03:23

+0

說了這麼多,null似乎不適用於ValidTo參數。我是否需要SessionSecurityToken DefaultTokenLifetime的一些配置設置? – user2047485 2013-03-15 11:42:29