簡體   English   中英

在MVC項目中添加了ASP.NET頁面中的會話超時以呈現SSRS報告

[英]Session timeout in ASP.NET page added in MVC project for rendering SSRS report

我已經開發了帶角度的ASP.NET MVC應用程序。 稍后階段,我發現我的公司正在使用基於SSRS的報告解決方案來滿足所有報告要求,因此我添加了一個.aspx頁面以使用報告查看器控件顯示這些報告。

這里的問題是,我想檢查Session是否在.aspx頁中過期,並調用MVC的注銷操作方法,並將用戶重定向到MVC的登錄操作方法。

請幫助我如何實現這一目標?

謝謝,維傑

檢查會話對象是否存在於您的頁面中,如果您在會話中設置用戶名,則當會話過期時該用戶名將為null。

if (Session["UserName"] != null)
{
   // Session has not expired
}
else
{
    // Redirect To login since session expired
}

您可以使用web.config中的sessionState元素的超時屬性以分鍾為單位增加超時值。

默認情況下,ASP.NET使用cookie來識別哪些請求屬於特定會話。 如果cookie不可用,可以通過將會話標識符添加到URL來跟蹤會話。 要禁用cookie,請設置sessionState cookieless =“ true”。

<sessionState mode="StateServer" cookieless="false" timeout="120"/>

感謝您的建議,我嘗試添加此代碼段,但是問題是會話超時時,我希望我的aspx頁面自動從控制器調用Logout方法,以后我希望同一個aspx頁面應重定向到登錄頁面嗎?

我添加了此方案以使用aspx頁面的OnPreRender(EventArgs e)自動調用注銷控制器方法,並在內部添加了以下代碼片段

protected void base.OnPreRender(e){
    Controls.Add(new LiteralControl(
    String.Format("<meta http-equiv='refresh' content='{0};url={1}'>",
    Session.Timeout * 60, "/main.mvc/logout?random=report")));
}

它正在像上面的代碼中那樣調用Lo​​gout方法,但是稍后我會收到錯誤頁面,其狀態類似“報告執行mt1vqsixnjiff145dvbe1o55已過期或找不到。(rsExecutionNotFound)”。 而是這個黃色的錯誤頁面,我想將用戶重定向到登錄控制器方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM