2009-09-04 57 views
1

我想知道是否有办法保持会话进行。Visual Studio保持会话之间的重建等

如果我在项目中更改太​​多或通过VisualSVN将代码提交给我们的SVN(乌龟),我已经厌倦了重建/构建之间的会话丢失。我正在开发一个有很多jQuery的ASP.NET MVC项目。

我想这样做,因为我在一个屏幕上使用Firefox(Firebug wins)测试我的项目,并在Visual Studio中编辑另一个屏幕。由于我的项目有一个会话系统,我希望能够在不必重新登录系统的情况下进行开发。

感谢

编辑: Visual Studio 2008专业与IIS开发服务器构建。 Windows Vista Business 64bit

回答

1

这是不可能的,当您重建并更改库的内容时,它们必须重新加载到进程空间中。但是,在.Net中,一旦加载它们,永远不会删除AppDomain中的程序集。要重新加载你的库,AppDomain需要被卸载并重新加载。另外,如果你的web.config有任何改变,它也会卸载/重新加载你的AppDomain。

您可以使用类似将会话状态推送到SQL Server的方式,以便AppDomain回收不会影响您。您可以使用web.config文件的sessionState元素执行此操作。

+0

感谢有关SQL服务器的想法,我会调查一下,但Tomas的解决方案现在可以使用。 – Phil 2009-09-07 09:36:19

+0

这实际上效果更好。刚刚从JS方法改变,我不会在重启之间的应用程序中失去我的位置! :) – Phil 2009-10-27 10:51:20

+0

对于正在寻找解决方案的其他人来说,checkout sessionState [mode =“StateServer”]作为快捷选项http://msdn.microsoft.com/zh-cn/library/ms178586.aspx – thebitguru 2012-09-03 05:13:02

2

我不认为这是可能的,因为应用程序重新启动每个版本。你可以做什么,是添加一个临时jQuery post调用登录页面,这将启动时运行。

$(function() { 
    $.post('/login/', { username: 'phil', password: 'noonewillguessthis' }); 
}); 

这样,您每次页面加载时都会“自动”登录系统。只需记住在部署之前将其删除...;)

+0

那么我将不得不接受一个小小的黑客。如果有人可以提供一个不太冒险的方法,将会标记为答案;) – Phil 2009-09-04 15:01:15

0

我面临同样的问题。我在一台机器上使用VS 2015。我重建/建立项目,并在我第一次调试时,第一次生成的会话丢失。想想我提到了2页的项目。第一页是“Default.aspx”,第二页是“Home.aspx”。

  1. Default.aspx页被加载第一
  2. 会话[ “用户ID”]上的Default.aspx生成
  3. 页是通过使用的Response.Redirect(“Home.aspx重定向到Home.aspx “,假)代码。
  4. 会议[“用户名”]上Home.aspx.cs的Page_Load中的功能或检查,如果它不存在
  5. 会议[‘用户名’]是不存在的..丢了!

解决方案:

我已经instaled Visual Studio的另一台机器上,我建立了机器上的项目。因为结果会议缺失问题得到解决。发布也在服务器上运行良好。也许这个问题来源于Visual Studio配置或者机器配置,我不确定,但是安装VS可能会解决这个问题。