我们开发了一个Web应用程序,当用户登录时,我将userID
保存在session["UserID"]
和每个page_load
我们检查会话是否为空,如果是,我们注销并重定向到登录页面。
如果发生异常并输入catch阻止session["UserID"]
为NULL并注销用户。
请帮助我知道如果发生任何异常,会话为空的原因。并注意我们在try-catch块中设置它们的所有方法和代码,并将代码写入日志文件。
答案 0 :(得分:1)
我们发现问题,我们将异常记录在一个文件中(存储在bin中名为Logfile的文件夹中的文件),Server.MapPath(" Bin")\ Logfile \ Log.txt。
这会使会话丢失,因为我们将文件写入bin文件夹。
我们修改日志跟踪并将其保存在bin旁边的日志文件中而不是bin中,并且每件事情都可以正常工作。
感谢您的努力
答案 1 :(得分:0)
嗯,我想这取决于你保持会话状态的位置以及抛出的异常类型。如果会话状态保留在过程中,那么异常可能导致Web应用程序进程回收。
为什么使用会话状态来确定用户是否已登录?这是一个ASP.NET
应用程序,对吗?假设它被浏览器消耗,对吗?你为什么不能使用cookies? Cookie比存储用户数据的会话更可靠(只要您不使用和滥用它)。为了这个目的,我建议你使用cookies而不是session。