【问题标题】:Azure (Free F1 WebApp) Session ManagementAzure(免费 F1 WebApp)会话管理
【发布时间】:2016-02-15 11:44:24
【问题描述】:

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

我知道在 SO 上讨论了很多 Windows Azure 会话管理,但是这个特定的配置问题似乎漏掉了。

可用的配置选项似乎是:

在我看来,底线是没有的。如果有人能证明并非如此,我将不胜感激。

编辑:

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

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

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

install-package Microsoft.Aspnet.Providers 

在包管理控制台中,添加: 会话[“时间”]=DateTime.Now.ToString() 到 Home Index 视图并在 about 视图中使用:

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 上创建默认数据库,这要归功于包含我所有配置设置并将它们交换进去的发布 scripts.json,并在数据库上创建一个 dbo,session 表。

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

我将网站降级为免费(以确保它没有默认配置为更高的计划,MSVC 曾经这样做)并且一切似乎仍然有效。这似乎就是我想要的。

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

编辑 2:

经过一天的浸泡测试,我现在 90% 确信 ASP.NET 通用提供程序是使用免费 Azure Web 应用程序进行快速可靠会话的方法。我不能说它是免费的,因为必须为 SQL Server 付费(基本 = 下午 4 英镑,请参阅:https://azure.microsoft.com/en-gb/pricing/details/sql-database/),但它肯定不贵,而且如果您仍然使用 SQL Server - 像我一样 - 它有道理。

【问题讨论】:

  • 无论我走到哪里,都对 Universal Providers 路线的脚本感到困惑。它是自动创建数据库/表吗?你能分享脚本或链接到它吗?谢谢!
  • 抱歉,我现在看到它在通过连接字符串提供的数据库中自动创建了一个名为 Sessions 的表

标签: asp.net session azure


【解决方案1】:

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

【讨论】:

  • 谢谢。明白了。关于从哪里开始使用表存储的自定义解决方案的任何指导?回到谷歌我猜!此外,想知道是否可以将站点计划作为短期措施升级到 D1 Shared 以获得更好的会话可靠性。
  • 不要指望免费/共享有任何可靠性。要获得至少 9.95% 的正常运行时间,您必须使用 2 个基本实例。但是删除会话、应用程序池回收是另一个问题;对于这种 IIS 配置,您可能应该使用小型 VM 实例 (A0),您可以在其中调整“始终运行”的应用程序池设置和 Web 应用程序的预加载。编写自己的会话提供者,网上有很多例子,你大概可以找到表存储的例子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
相关资源
最近更新 更多