Asp.net Azure(免费F1 WebApp)会话管理

Asp.net Azure(免费F1 WebApp)会话管理,asp.net,session,azure,Asp.net,Session,Azure,是否有一种快速、廉价、可靠的会话状态机制可用于免费的F1 WebApp ASP.NET演示配置? 我知道关于WindowsAzure会话管理的讨论很多,但这个特殊的配置问题似乎是漏洞百出 可用的配置选项似乎是: InProc模式:不建议在云中使用,但对于单个实例Azure F1 WebApp,理论上,它对于演示网站来说应该是可靠的。但是,根据我的经验,会话超时是不可预测的,并且与web.config文件中的设置无关 Azure Redis缓存:推荐但不支持免费F1网络应用程序;需要升级到付费计

是否有一种快速、廉价、可靠的会话状态机制可用于免费的F1 WebApp ASP.NET演示配置?

我知道关于WindowsAzure会话管理的讨论很多,但这个特殊的配置问题似乎是漏洞百出

可用的配置选项似乎是:

  • InProc模式:不建议在云中使用,但对于单个实例Azure F1 WebApp,理论上,它对于演示网站来说应该是可靠的。但是,根据我的经验,会话超时是不可预测的,并且与web.config文件中的设置无关

  • Azure Redis缓存:推荐但不支持免费F1网络应用程序;需要升级到付费计划。(参考资料:)

  • Azure SQL:不推荐或不支持。 **如果您已经运行了Azure SQL server,那么这似乎是一个可行的选择。参考文献:。不幸的是,我发现无法找到修改后的InstallSqlState.sql,并且所有下载链接都失败(示例:)。 **Universal Web Providers可能会提供一个解决方案(refence:),但至少对我来说,还不清楚它们是否提供会话管理支持以及SQL Server连接支持

  • Azure表存储:一个潜在的选择,但似乎是一个过时的解决方案,因为所有链接都已断开。(参考:)。我从未使用过Azure表,所以这看起来很神秘

  • StateServer:不可能使用免费的F1 webapp。大概需要一台虚拟机

  • 顾客:是的,这样行**Redis Cache是一个自定义会话管理器,所以我认为可以使用另一个会话管理器**替代AppFabric(参考:)似乎不再受支持,而是一个付费解决方案**也许有一个替代的定制解决方案,我还没有研究

  • Azure缓存服务和基于角色的缓存:已于2016年11月30日退役。(参考:)

在我看来,底线是没有。如果有人能证明不是这样,我会非常感激

编辑:

我一整天都在思考和修补这个问题。到目前为止,我的调查结果是:

1) 升级到D1 WebApp服务计划大大提高了会话状态管理的可靠性,但仍然容易出现不可预测性。正如Hrvoje Hudo在下面指出的那样,你不能指望免费或共享服务的可靠性

2) 安装ASP.NET通用提供程序似乎是一个解决方案。我使用MSVC2013创建了一个新的MVC WebApp项目,选择Azure托管,键入:

install-package Microsoft.Aspnet.Providers 
在包管理控制台中,添加了: 会话[“Time”]=DateTime.Now.ToString() 指向主索引视图,并使用以下命令在“关于”视图中引用它:

ViewBag.Message = Session["Time"] 
并将web.config更新为:

<sessionState mode="Custom" customProvider="DefaultSessionProvider"  timeout="1">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=Whatever" connectionStringName="DbaseName"/>
  </providers>
</sessionState>


),但它肯定不贵,而且如果您使用的是SQL Server,就像我一样,这是有道理的。

没有“银弹”会话状态,这就是为什么您有所有这些选项,选择最适合您的需求和业务案例的。对于您无法期望可靠服务的免费web应用程序,Azure将定期重新启动您的应用程序池,并且存在很多限制,因此默认InProc可能是一个问题,但您仍然使用免费层。所以,既然你想节省一些钱,那就花时间编写你自己的,它使用Azure存储(table或blob,我会使用table)或其他存储机制

谢谢。理解。关于从何处开始使用表存储的自定义解决方案有何指导?我想回到谷歌吧!另外,想知道作为一项短期措施,是否可以将站点计划升级为D1共享,以提高会话可靠性。不要期望免费/共享的任何类型的可靠性。要获得至少9.95%的正常运行时间,您必须使用2个基本实例。但丢弃会话、应用程序池回收是另一个问题;对于IIS的这种配置,您可能应该使用小型VM实例(A0),您可以在其中调整“始终运行”应用程序池设置和预加载web应用程序。为了编写您自己的会话提供程序,网络上有很多示例,您可能会发现表存储示例无论我走到哪里,都会对通用提供程序路由的脚本感到困惑。是否自动创建数据库/表?您可以共享脚本或链接到它吗?谢谢抱歉,现在我看到它在通过连接字符串提供的数据库中自动创建一个名为Sessions的表