Asp.net Web主机有奇怪的设置,需要其他会话状态建议

Asp.net Web主机有奇怪的设置,需要其他会话状态建议,asp.net,asp.net-mvc,asp.net-mvc-4,session-state,sql-session-state,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Session State,Sql Session State,我正在为一个体育俱乐部建立一个网站。俱乐部不想把他们的主机转移到另一个网络主机上,所以我只能选择当前的主机。我将新的web应用程序部署到主机上,但经过几个小时的测试,很明显,登录和会话状态方面出现了一些奇怪的情况 每当我空闲超过10分钟时,我的MVC验证令牌就会突然停止解密。我进入IIS并将机器密钥设置为静态值,这个问题消失了,但很明显,他们将ASP.NET空闲超时设置为10分钟。这意味着,如果站点上没有活动,每隔10分钟InProc会话数据就会被销毁。我向主机提交了一份支持通知单,但他们不愿意

我正在为一个体育俱乐部建立一个网站。俱乐部不想把他们的主机转移到另一个网络主机上,所以我只能选择当前的主机。我将新的web应用程序部署到主机上,但经过几个小时的测试,很明显,登录和会话状态方面出现了一些奇怪的情况

每当我空闲超过10分钟时,我的MVC验证令牌就会突然停止解密。我进入IIS并将机器密钥设置为静态值,这个问题消失了,但很明显,他们将ASP.NET空闲超时设置为10分钟。这意味着,如果站点上没有活动,每隔10分钟InProc会话数据就会被销毁。我向主机提交了一份支持通知单,但他们不愿意在我的应用程序池中为我更改该设置,并声明“此时无法在服务器上更改该设置,因为增加该设置可能会影响服务器的性能(原文如此)”

俱乐部规模较小,最多有500名会员,很少有会员会经常访问该网站,因此我可以保证10分钟的超时每天会发生多次,我将会议超时设置为60分钟,因此,如果站点的唯一用户在给定时间空闲10分钟,那么让站点清除会话不是一个好主意

我的第一个想法是使用SQL会话存储。我从未使用过它,但我知道它存在。但是,有一个警告是,我们将SQL存储限制为350mb。虽然这可能超出了网站目前的需求,但我想接下来我们可能会接近极限。我预计在会话中不会存储太多数据,在与paypal和购物车交互时只会存储一些数据(可能这里或那里也有系统消息),所以这可能不是一个很大的问题

我们确实有无限的磁盘空间,所以我考虑的另一个替代方案可能是编写一个自定义的基于磁盘的会话存储解决方案。有没有理由认为这可能不是一个比SQL更好的主意

最后,我有了一个完全脱离实际的想法“哦,天哪,我真不敢相信我在考虑这么做”,那就是定期(比如说,每8分钟)在每个页面上进行一次AJAX调用“ping”一个非缓存的轻量级MVC操作,只是为了让服务器保持活力。我认为这可能会起作用,但有一种情况除外:

  • 转到购物页面并创建购物车
  • 转到贝宝
  • 无论出于何种原因,在paypal屏幕上花费10分钟以上的时间,而网站上没有其他人
  • 回来看到他们的车消失了
  • 在本例中,我可能只是将Cart移动到数据库中

    所以。。。想法、评论、建议?我真的对东道主不让我改变这一设置感到沮丧,我的第一反应是寻找另一位东道主,但正如我之前所说,俱乐部对东道主有着某种奇怪的依恋,不想搬到其他地方

    提前谢谢

    一些想法:

    关于这个问题:在负载平衡系统上,会话“丢失”是很常见的。这可能通过移动到一个指定的服务器来解决(如果托管公司现在没有这样做,并且提供了选项)

    Cookie会话:如果您使用的是.Net成员身份,您可以将登录过程更改为使用Cookie。很明显,一些用户不允许出现Cookie陷阱。这也是一个考虑因素。目前正在学校网站上工作,他们希望用户保持登录状态

    **有了Cookies,您的登录是稳定的,但您的会话不会得到更好的保存。因此,在会话状态下,您的运气不佳,有很多东西可以依靠


    最终的结果是,您可以通过IP或Cookie跟踪用户,但除非这是一个可修复的负载平衡问题,否则您将走向一个无会话应用程序。

    我花了几天时间考虑您关于无会话的评论。我不想走这条路,因为会话非常容易使用。但是在玩了fe之后w我在最初的问题中抛出的备选方案,很明显session对我来说永远都不可靠,我需要转向无会话应用程序。幸运的是,只有一件重要的事情需要重构,我可以为应用程序的其余部分考虑无会话。我理解你的痛苦。在“permane”项目中工作nt登录意味着cookies。结果是会话在登录范围内永远不可能可靠。首先,我们把精力放在“维护”会话对象上。过了一段时间,维护逻辑就成了它自己的维护巨无霸。毕竟,我们放弃了会话。祝你好运。这不容易。