2011-04-13 48 views
6

我在写一个asp.net Web应用程序。我写了一个登录页面来验证用户身份,并将他们的UserID存储在Session["UserID"]中。网络应用程序中的每个页面都将检查有效的Session["UserID"]。如果无效,则将用户重定向到登录屏幕。asp.net - 维护会话,同时调试和重建解决方案?

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

有没有办法让我的会话每次都重新生成我的解决方案,因此我不必每次都登录登录页面?

回答

3

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

您可以在应用程序中添加“记住我”功能。您需要执行一些重新实现操作,以便将数据存储中的当前用户身份验证信息保留在不受ASP.NET会话状态影响的情况下。另外,您应该将该信息的索引存储在比会话cookie更持久的cookie中。

这是我能想到的最好的,或者至少这是我能想到的最好的,没有一些重要的.NET安全提供商的扩展。但是,要充分利用它 - 我以前从未尝试过解决这个特定问题,而且我几乎不认为自己是与ASP.NET会话相关的所有内容的专家。

2

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

这是故意的,因为他们无法知道您在页面中使用的DLL是否仍在那里。因此,他们自己监控文件夹,并在写入文件时触发重新启动。

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