2017-07-03 39 views
0

我有刷新,每5分鐘一個ASP.NET MVC頁面登錄頁面。此頁面僅用於顯示數據。用於託管此頁面的電腦幾天沒有任何交互。該頁面會刷新幾天,但隨後(本身),該頁面將隨機在2,4或5天后重定向到登錄頁面。asp.net的MVC頁面重定向後的幾天

任何想法,怎麼回事?

添加以下屬性的Web.config這個頁面只因爲我想也許這是超時而數據庫是運行在夜間或一些奇怪的類似的備份。

<location path="~/Views/Production/WIPScanStationViewer.aspx"> 
<system.web> 
    <httpRuntime executionTimeout="1000" maxRequestLength="2048576"/>  
</system.web>  
</location> 
+4

是應用程序池回收?您的安全Cookie是否過期? –

+0

應用程序池正在回收。間隔設置爲1740分鐘,即29小時。有時這個頁面有時不會被重定向到登錄頁面,只要5天。我不確定安全Cookie是否過期。 @SteveGreene – npineda

回答

0

您是否使用任何形式的認證/授權?如果是這樣,重定向到登錄屏幕應該是這裏的線索。您的Cookie可能會在X天后過期。如果使用ASPNET身份檢查Startup.cs >>Startup.ConfigureAuth(IAppBuilder app)

app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/Account/Login"), 
     Provider = new CookieAuthenticationProvider 
     { 
      // Enables the application to validate the security stamp when the user 
      // logs in. This is a security feature which is used when you 
      // change a password or add an external login to your account. 
      OnValidateIdentity = SecurityStampValidator 
       .OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
       validateInterval: TimeSpan.FromMinutes(30), 
       regenerateIdentity: (manager, user) 
       => user.GenerateUserIdentityAsync(manager)) 
     } 
    }); 

由於您使用窗體身份驗證正確的地方,檢查這個超時值將是你的網絡配置。你應該看到像這樣在配置只要你的Cookie是自動生成的

<!-- 
forms Attributes: 
name="[cookie name]" - Sets the name of the cookie used for Forms 
Authentication. 
loginUrl="[url]" - Sets the URL to redirect client to for authentication. 
protection="[All|None|Encryption|Validation]" - Sets the protection mode for 
data in cookie. 
timeout="[minutes]" - Sets the duration of time for cookie to be valid 
(reset on each request). 
path="/" - Sets the path for the cookie. 
requireSSL="[true|false]" - Should the forms authentication cookie be sent 
only over SSL? 
slidingExpiration="[true|false]" - Should the forms authentication cookie 
and ticket be reissued if they are about to expire? 
--> 

如果手動生成的Cookie,然後你只需要更新您的FormsAuthenticationTicket類有正確的超時值。另外請注意,如果您在.config文件中有Cookie設置值,但是在代碼中手動生成工單/ cookie,則手動生成將覆蓋配置值。

請參閱此MSDN類規範在代碼中設置超時:https://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

而且,如果cookie不是問題,你可能要檢查你的會話狀態在web.config中也是如此。請這傢伙在這裏..很簡單:https://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.71).aspx

+0

我正在使用表單模式進行身份驗證,而不是身份。我沒有'Startup.cs'類 – npineda

+0

對不起,忘標記 – npineda

+0

@Noahp生成您的票證或cookie自動正確@Adrian?如果是這樣,請檢查您的web.config文件。我更新了我的答案,以便展示一個例子 – Adrian

0

好像你的會話cookie過期。嘗試打開該頁面,按F12打開開發。工具並轉到「應用程序」選項卡。一旦出現,展開「Cookie」節點並搜索您的會話cookie。 「過期/最大年齡」列應顯示過期日期,以便您能夠知道這是您問題背後的原因。

如果這是問題,並且加載該頁面的Web瀏覽器永遠不會關閉,那麼可以將該值更改爲「Session」,這意味着它不會有過期日期,而不是該cookie將過期爲網絡瀏覽器關閉後

您也可以將cookie設置爲在X天或甚至幾個月後過期,但說實話,我並不是一個擁有非常長壽的cookie的忠實粉絲,尤其是因爲如果cookie隨時受到攻擊,攻擊者只要Cookie不會過期,就可以訪問您的會話。

相關問題