asp.net - 在调试和重建解决方案时维护会话?

时间:2011-04-13 17:35:53

标签: visual-studio-2010 debugging

我正在编写一个asp.net Web应用程序。我编写了一个登录页面,用于对用户进行身份验证,并将UserID存储在Session["UserID"]中。 Web应用程序中的每个页面都将检查有效的Session["UserID"]。如果无效,则将用户重定向到登录屏幕。

这很好用,但它减慢了我调试网站上每个页面的能力。每次我对*.cs文件进行更改时,我都需要按F6重建我的解决方案。这样做会破坏我的会话,这意味着我需要返回登录界面,输入我的用户名和密码,点击我正在处理的页面,进行测试,对代码进行代码更改,然后重复。

每次重新构建我的解决方案时,有没有办法让我的会话保持活动状态,所以我不必每次都进入登录页面?

2 个答案:

答案 0 :(得分:3)

不幸的是,我不知道您会找到解决此限制的方法。每次构建项目时,您都将触发重新启动Web应用程序。即使您使用持久性存储来保持会话,您也将丢失在浏览器中设置的会话cookie。

您可以在应用中添加“记住我”功能。您需要进行一些重新实现,以便在数据存储中保留有关当前用户身份验证的信息,该数据存储的易失性低于ASP.NET会话状态。此外,您将索引存储在cookie中,该cookie比会话cookie更持久。

这是我能想到的最好的,或者至少它是我能想到的最好的,没有.NET安全提供商的一些重要扩展。但是,带上一点点盐 - 我以前从未试图解决这个特殊问题,而且我几乎不认为自己是ASP.NET会话相关的所有专家。

答案 1 :(得分:2)

您丢失会话的原因是您在写入应用程序文件夹时重新启动了应用程序。实际上,当您发布应用程序时会发生同样的事情,当前登录的每个用户都将失去会话。

这是故意的,因为他们无法知道您在页面中使用的DLL是否仍然存在。因此,他们会监视文件夹本身,并在您写入文件夹时触发重启。

没有解决方法。它实际上是一个节省时间(大部分时间)的功能,想象一下跟踪内存损坏错误,因为指针在代码中移动了!