【问题标题】:Visual Studio Keep Session between rebuilds etcVisual Studio 在重建等之间保持会话
【发布时间】:2009-09-04 13:50:27
【问题描述】:

我想知道是否有办法让会议继续进行。

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

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

谢谢

编辑: 带有内置 IIS 开发服务器的 Visual Studio 2008 Professional。 Windows Vista 商业版 64 位

【问题讨论】:

    标签: visual-studio visual-studio-2008 iis


    【解决方案1】:

    我认为这是不可能的,因为应用程序在每次构建时都会重新启动。不过,您可以做的是向登录页面添加一个临时的 jQuery post 调用,该调用将在启动时运行。

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

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

    【讨论】:

    • 那么我将不得不接受一个小技巧。如果有人可以提供不那么骇人听闻的方法,将标记为答案;)
    【解决方案2】:

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

    您可以使用诸如将会话状态推送到 SQL 服务器之类的方法,以便 AppDomain 回收不会影响您。您可以使用 web.config 文件的 sessionState 元素执行此操作。

    【讨论】:

    • 感谢有关 SQL Server 的想法,我将对其进行调查,但 Tomas 的解决方案目前有效。
    • 这实际上效果更好。刚刚从 JS 方法更改,我不会在重新启动之间失去我在应用程序中的位置! :)
    • 对于其他正在寻找解决方案的人,请查看 sessionState[mode="StateServer"] 作为快速选项msdn.microsoft.com/en-us/library/ms178586.aspx
    【解决方案3】:

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

    1. Default.aspx 页面首先加载
    2. Session["UserID"] 在 Default.aspx 上生成
    3. 使用 Response.Redirect("Home.aspx",false) 代码将页面重定向到 Home.aspx。
    4. Session["UserID"] 检查 Home.aspx.cs 的 Page_Load 函数是否存在
    5. Session["UserID"] 不存在.. 丢失!

    解决方案:

    我在另一台机器上安装了 Visual Studio,并在该机器上构建了项目。结果会话丢失问题得到解决。发布在服务器上也运行良好。也许这个问题是由 Visual Studio 配置或机器配置引起的,我不确定,但安装 VS 可能会解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多