在 Azure 网站上禁用池回收
Posted
技术标签:
【中文标题】在 Azure 网站上禁用池回收【英文标题】:Disable pool recycling on Azure Websites 【发布时间】:2015-02-09 19:53:50 【问题描述】:我在 Azure 网站上部署了一个网站,我想禁用池回收。
如果您有常规的 IIS 安装,您可以在应用程序池高级设置中通过将“回收 -> 禁用重叠回收”设置为 true 来禁用此功能。
但我似乎无法在 azure 管理控制台中找到此选项,也没有在线找到有关此主题的任何信息。
任何指针将不胜感激!
【问题讨论】:
【参考方案1】:您必须使用类似于https://github.com/projectkudu/kudu/wiki/Xdt-transform-samples#remove-all-your-recycling-options-from-your-net-4-application-pool-and-make-it-available-always 中提到的 XDT 转换。
更多关于使用转换的细节在http://blogs.msdn.com/b/waws/archive/2014/06/17/transform-your-microsoft-azure-web-site.aspx
【讨论】:
【参考方案2】:非常感谢 Puneet Gupta 为我指明了正确的方向! 我无法使用确切的解决方案,但它让我走上了正确的道路。
我是这样解决这个问题的:
1) 获取 applicationHost.config。 最简单的方法是通过“文件”通过 SCM 控制台,然后按照 json 中的链接。 最后,你到了这里:https://YOUR_WEBSITE_NAME.scm.azurewebsites.net/api/vfs/LocalSiteRoot/Config/applicationhost.config
2) 识别重叠回收的当前状态。 在 applicationHost.config 文件中,查找“applicationPools”元素 它应该是这样的:
<applicationPools>
<add name="YOUR_SITE_NAME" managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" />
</add>
<add name="~1YOUR_SITE_NAME" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated">
<processModel identityType="ApplicationPoolIdentity" />
</add>
</applicationPools>
如果你看到这个,那么重叠回收是启用! 你不能直接写入这个文件,但幸运的是微软给了我们改造它的能力!
3) 改造它! 您可以通过将 applicationHost.xdt 文件放在网站的 /site 目录中来转换 applicationHost.config 文件(请注意,网站本身部署在 /site/wwwroot 目录中,因此您的 applicationHost.xdt 转换必须驻留在您网站所在位置的父文件夹。 如果你想禁用重叠回收,那么这就是你放在文件中的内容:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">>
<system.applicationHost>
<applicationPools>
<add name="YOUR_SITE_NAME" xdt:Locator="Match(name)">
<recycling disallowOverlappingRotation="true" xdt:Transform="Insert" />
</add>
<add name="~1YOUR_SITE_NAMEd" xdt:Locator="Match(name)">
<recycling disallowOverlappingRotation="true" xdt:Transform="Insert" />
</add>
</applicationPools>
</system.applicationHost>
</configuration>
4) 重启网站 最后,您需要重新启动您的站点以应用您的转换。 重新启动后,再次转到第 1 步,您现在应该会看到以下内容:
<applicationPools>
<add name="YOUR_SITE_NAME" managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" />
<recycling disallowOverlappingRotation="true" />
</add>
<add name="~1YOUR_SITE_NAME" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated">
<processModel identityType="ApplicationPoolIdentity" />
<recycling disallowOverlappingRotation="true" />
</add>
</applicationPools>
等等:重叠回收现在已在您的 azure 网站上禁用。
【讨论】:
您知道名称中带有“~1”的站点是什么吗?是单片机应用吗? 是的,它似乎是。 您可以使用环境变量而不是硬编码 YOUR_SITE_NAME。我发现%WEBSITE_SITE_NAME%
= YOUR_SITE_NAME
和%WEBSITE_IIS_SITE_NAME%
= ~1YOUR_SITE_NAME
。 Kudu wiki 有一些使用环境变量替换的示例:github.com/projectkudu/kudu/wiki/…。
现在应该是“%XDT_SITENAME%”和“~1%XDT_SITENAME%”以上是关于在 Azure 网站上禁用池回收的主要内容,如果未能解决你的问题,请参考以下文章