c# - 如何阻止 Azure 每 5 分钟触发一次 Session_Start
问题描述
我正在使用托管在 Azure 上的个人 ASP.NET MVC5 项目
我刚刚意识到,每 5 分钟Session_OnStart
调用一次
我的代码如下所示:
public void Session_OnStart()
{
Guid sessionGuid = Guid.NewGuid();
HttpContext.Current.Session.Add("_MySession", sessionGuid);
RegisterSession(sessionGuid);
logger.Log(LogLevel.Info, "Starting session with guid " + sessionGuid.ToString());
}
这个想法是为每个访问该网站的用户提供一个 GUID,以匿名跟踪他在做什么以及他打开了哪些页面。
但是,我今天早上没有去我的 PreProd 环境,它每 5 分钟(或多或少 5 秒)触发一次的事实表明它是一个后台进程或访问网站的东西。
这在 localhost 测试中没有发生,只有在 Azure 上托管时才会发生
如何阻止此操作以防止 Azure 进程触发Session_OnStart
?
谢谢
解决方案
您可能启用了 Always On。
您可以在App Service -> Configuration -> General Settings下禁用它。
始终开启。默认情况下,如果应用程序空闲一段时间,则会卸载它们。这使系统可以节省资源。在基本或标准模式下,您可以启用Always On以始终保持应用程序加载。如果您的应用程序运行连续 WebJobs 或运行使用 CRON 表达式触发的 WebJobs,则应启用Always On,否则 Web 作业可能无法可靠运行。
PS 看看 Application Insights用户流可以为您做什么。
编辑:
当我的网站公开时,禁用 Always On 会不会更快?没有它太慢了,无法使用。
您遇到的启动缓慢是因为运行您网站的进程在一段时间不活动后关闭。必须重新启动该过程需要一些时间,因此会放缓。顺便说一下,这是因为 ASP.NET 在 IIS 中运行。这不是 Azure 特定的问题。就像Ian Kemp所说,你必须让你的应用程序变得缓慢。
这个问题有几种可能的解决方案,例如Precompiling your website。另一种方法是切换到 ASP.NET Core,因为它要快得多。
更多信息:修复 IIS 的缓慢初始加载
推荐阅读
- python - 尝试使用 Flask 中的渲染模板重定向到另一个 HTML 页面
- python - 检查输入时出错:预期输入为 3 维,但得到的数组形状为 (50, 1)
- python - 如何使用熊猫从csv中的2列中获取重复值列表
- .htaccess - 如何将此 htaccess 转换为 iis web.config?
- python - 自动从分组数据框中创建新数据框
- firebase - 函数执行耗时 60002 毫秒,完成状态为:可调用函数的“超时”
- java - 如何同时填写多个表
- sql - 如何根据其他列的值更新列
- html - 颜色被覆盖,但css中的文本装饰
- angular - 离子选择和离子日期时间的离子通过值计算