Amb*_*hah 14 .net c# asp.net session-state continuous-deployment
我在C#/ ASP.NET中有一个目前正在开发的网站.当我们正在制作时,我希望在一天中经常发布,因为我们修复了错误并添加了功能(例如:http://toni.org/2010/05/19/in-praise-of -continuous-deployment-the-wordpress-com-story /).
如果您上传新版本的网站甚至更改单个文件,它会启动当前登录的用户并使其从任何表单等开始.是否有秘密能够在不干扰.NET站点用户的情况下进行部署?
您之所以看到这一点,是因为您正在重置应用程序池,从而重置每个人的会话.
最干净的路线是将会话卸载到会话状态服务器,或最小化会话使用.
解决此问题的一种方法是,如果无法卸载会话,则始终部署到新的虚拟目录.然后,您的面向公众的网址只会重定向到您的最新版本.已登录的所有用户将继续使用旧版本,但任何新用户都将使用新版本.
如果您更改配置文件,应用程序的bin文件夹的内容或类似内容,ASP.NET工作进程将与您的应用程序一起重新启动.
这会导致删除会话和被踢出的用户.
解决方案是使用默认值以外的其他会话存储方法InProc
.
您可以通过设置会话状态模式来实现此目的.这些SqlServer
和StateServer
选项为您的问题提供了非常好的补救措施.
SqlServer
模式相对容易设置和启动并运行.(基本上,它只是创建一个数据库,运行aspnet_regsql,然后将其指定给配置.)如果您没有MS SQL Server或不想使用它,您可以使用StateServer
或创建自己的提供程序并使用它该Custom
模式.
唯一的限制是您只能使用SqlServer
和StateServer
模式存储可序列化的值.
归档时间: |
|
查看次数: |
1886 次 |
最近记录: |