Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在会话超时时立即将用户重定向到登录页面(Default.aspx)_C#_Asp.net_Session_Redirect - Fatal编程技术网

C# 如何在会话超时时立即将用户重定向到登录页面(Default.aspx)

C# 如何在会话超时时立即将用户重定向到登录页面(Default.aspx),c#,asp.net,session,redirect,C#,Asp.net,Session,Redirect,如果会话超时,我想重定向用户。在这里,我制作了一个web用户控件,它在不存在会话的情况下获取会话上下文,然后重定向到登录页面 以下是web用户控制代码: public partial class WebUserControl : System.Web.UI.UserControl { protected override void OnPreRender(EventArgs e) { if (Context.Session["Username"] != null

如果会话超时,我想重定向用户。在这里,我制作了一个web用户控件,它在不存在会话的情况下获取会话上下文,然后重定向到登录页面

以下是web用户控制代码:

 public partial class WebUserControl : System.Web.UI.UserControl
{
    protected override void OnPreRender(EventArgs e)
    {
        if (Context.Session["Username"] != null && Context.Session.IsNewSession)
        {
            if (this.Page.User != null && this.Page.User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                Response.Redirect("../Default.aspx");
            }
        }
        base.OnPreRender(e);
    }
}
这是我的注册方法,用于此Web用户控件对母版页中的所有页面生效,如下所示:

<%@ Register Src="~/Admin/WebUserControl.ascx" TagName="companylogo" TagPrefix="uc1"%>
但是,当会话[“用户名”]在默认时间内过期时,会出现此错误。但是这种Web用户控制机制不起作用(不管它在过去如何起作用)。也许我的代码有问题


这是为了我的网络安全,因为这种机制对于保护网站不被他人匿名访问非常有用。

此处为上下文。会话不为null尝试检查您的会话[“用户名”]不为null,然后继续,我认为您的会话为null,因此您得到的错误序列不包含任何元素。您是指上下文。会话[“用户名”]是的。将此条件与上下文一起放置。会话!=null&&Context.Session.IsNewSession。因为这里您从会话[“username”]获取用户id,但是,如果它为空,则您无法获取您的IDIA i更新我的问题,请查看它。@Akki-ya我遵循您的建议,但仍然出现错误。当会话到期时。
Server Error in '/EasyWeb' Application.

Sequence contains no elements

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Sequence contains no elements

Source Error: 


Line 53:             using (DataClassesDataContext db = new DataClassesDataContext())
Line 54:             {
Line 55:                 int user_id = db.Users.Where(u => u.Username.Equals((String)Session["Username"])).Select(u=>u.Id).First();
Line 56:                 foreach (var item in db.Users.Where(u=>u.Id.Equals(user_id)).Select(u=>u).ToList())
Line 57:                 {

Source File: f:\EasyWeb\Admin\MasterPage.master.cs    Line: 55 

Stack Trace: 


[InvalidOperationException: Sequence contains no elements]
   System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +847
   System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +113
   System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +344
   System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute(Expression expression) +23
   System.Linq.Queryable.First(IQueryable`1 source) +211
   Admin_MasterPage.Page_Load(Object sender, EventArgs e) in f:\EasyWeb\Admin\MasterPage.master.cs:55
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053