Azure(免费F1 WebApp)会话管理

时间:2016-02-15 11:44:24

标签: asp.net session azure

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

我知道Windows Azure会话管理在SO上进行了很多讨论,但是这个特殊的配置问题似乎已经过时了。

可用的配置选项似乎是:

在我看来,没有底线。如果有人能证明不是这样的话我真的很感激。

编辑:

我一整天都在考虑和修补这个问题。到目前为止我的发现是:

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

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

install-package Microsoft.Aspnet.Providers 
在包管理控制台中

添加:     会话[ “时间”] = DateTime.Now.ToString() 到Home Index视图并在about view using中引用它:

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>

当我发布网站时,默认数据库是在我的Azure SQL Server上创建的,由发布脚本.json提供,包含我的所有配置设置并交换它们,并在数据库上创建一个dbo会话表。

浏览网站时,会在数据库表上创建新会话 - 我可以使用MS Management Studio 2013查看它们 - 并在超时(60秒+)后删除。

我将网站降级为免费(确保默认情况下没有配置为更高的计划,MSVC曾经这样做),一切似乎仍然有效。这似乎是我在寻找的。

3)Azure表。还不能理解这些!如果有人知道一个好的“如何”教程,我很乐意看看它。

编辑2:

经过一天的浸泡测试后,我现在90%确信ASP.NET Universal Providers是快速发展的方法。使用免费Azure Web应用程序的可靠会话。我不能说它是免费的,因为SQL Server必须付费(基本=〜下午4点见:https://azure.microsoft.com/en-gb/pricing/details/sql-database/),但它肯定不贵,如果你还在使用SQL Server - 就像我一样 - 这很有意义。

1 个答案:

答案 0 :(得分:1)

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