我正在为客户开发一个当前的 Web 应用程序,但我遇到了一些 session 变量在我身上消失的问题。我将尽力对场景进行良好的描述。除了我创建的允许用户修改存储在资源文件中的字符串的页面之外的任何页面上都不会发生这种情况。
它出现的时间: 用户导航到该页面,从列表中选择一个资源文件,然后第一次单击“编辑”。该页面将文件加载到 GridView 中并允许他们对其进行编辑。此时, session 变量将被保存并在所有回发时正确重新加载。现在,他们单击底部的保存按钮将资源文件写入文件系统(App_LocalResources)。他们从列表中选择一个新文件,尝试加载它,这一次 session 变量被清除,并将它们重定向到登录页面,因为它不知道那里的用户信息。
其他详细信息:
只有当他们单击“保存”按钮时才会发生这种情况,该按钮又调用我的过程写入资源文件。
除了写入位于 App_LocalResources 中的资源文件之外,我在保存函数中并没有真正做太多事情,并且出于某种原因,这会清除我的 session 变量。
有问题的 session 变量存在用户信息,我尝试将其作为 page_load 方法中的第一件事。
此 session 信息也会在每次回发时通过 page_load 方法执行。
谢谢大家,我希望我描述得足够好。
最佳答案
当您更改与应用程序关联的目录中的文件时,IIS 将重置应用程序。重置应用程序将使您丢失内存 session 。
您可以将资源文件放在目录之外。或者使用状态服务器进行 session 。
关于ASP.NET - 消失的 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730928/