2011-08-17 99 views
2

好的我有一个问题,我不知道如何处理。ASP.NET Postback User Not Logged

我有一个asp.net vb网站与MSSQL在后端。对于每个页面,在pre-init中,它会检查会话(“UserID”)是否已登录。如果已登录,则会加载,如果没有,则会将您带到登录页面。

我的一个页面有一个textarea,有人可以花15分钟写完,完成后,它们会保存并且可以将数据从textarea上传到数据库,如果它们被记录

如果我遇到问题,我是否会将新网页上传到网站,将所有用户踢出网站并强制他们重新登录。

我知道这将是一个安全漏洞,让他们写入数据库不用登录。

有没有一种方法可以让我做不同的事情就像在本地保存的textarea到自己的电脑?或者我没有想过的其他方式?

回答

0

用户正在开始启动,因为当您部署新页面时,主机进程将重新启动。并且在您使用InProc会话(假设)时,存储在内存中的会话将丢失。

而不是将会话存储在内存中,您可以将它们存储在数据库中。并且每当用户进行回发时,检查其对数据库的会话有效性。

2

你可以做的是配置会话状态以使用Sql Server。在你的web.config

<configuration> 
    <sessionstate 
     mode="sqlserver" ..... 

这样,当您上传这会导致Web应用程序重新启动新的网页会话将保持活跃。

0

您应该在您要进行网站更改时发布或通知您的用户,并且在您不希望许多用户访问您的网站的时间执行此操作(例如,周日上午的凌晨2点)。 (这可能很明显,也许不是 - 我不想听起来像一个混蛋:D)

这样说,你可以每隔几分钟做一次ajax帖子,这样可以允许部分保存他们的工作,这样如果你把它们全部引导起来,它们只会有几分钟的工作损失。

您还可以设置一个辅助服务来保存您的数据库事务,直到可以写入主数据库为止。基本上,你的页面将他们的信息发送到服务器并写入临时数据库 - 让该系统运行chron作业,检查主数据库是否启动,然后在其再次启动时发送所有更新。

当你更新网站时,它基本上杀死了他们的所有会话 - 我听说你可以做些事情来保存跨越更新的会话,但我相信它与MVC3相关。

祝你好运。

+0

或者你可以做sassyboy的web.config项:D – alexpwalsh