通过appcmd更改IIS上的物理路径未激活


9

我们在IIS 7.5上遇到了一个问题,其中有一个简单的部署系统,该系统包含以下内容:

创建一个新的webroot的zip文件,其中包含三个文件夹:

Api
Site
Manager

该文件解压缩到一个新文件夹中(假设我们将其称为“ SITE_REV1”),其中包含一个脚本,该脚本调用以下内容(每个webroot之一):

C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"

这通常可以工作9/10次。在某些情况下,webroot似乎已正确更新(如果我检查了IIS Manager中的基本设置,则该路径看起来正确),但是正在运行的站点实际上指向的是旧位置。我们设法“修复它”的唯一方法是运行IIS重置。回收有问题的应用程序池还不够。

有时似乎甚至有必要进行重新启动,但是我不是100%确信这是正确的(并不是总是我自己来解决问题)。

我使用Powershell和Web-Administration模块重写了脚本,希望在appcmd中出现故障,但是会发生相同的问题。

Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"

有没有人经历过这样的事情?有人对正在发生的事情有什么头绪,而我可以做些什么来防止此问题?对我们来说,IIS重置并不是一个好选择,因为每次我们尝试在单个站点上部署更改时,这都会影响服务器上的所有站点。

编辑:我们已经确定IIS管理器中站点的启动/停止(不是应用程序池)可以解决错误的物理路径,但是如果我使用appcmd停止站点,更改物理路径,然后启动它,则我仍然会遭受同样的问题。我一片空白...


1
对于那些无法正常工作的时间,这些请求是否可能是现有应用程序通过重叠旋转由旧应用程序池处理的?不确定网站的正常运行时间要求,但是您可以尝试禁用重叠的轮换,并在部署脚本中包括应用程序池回收命令。
explunit

不会,所有后续请求均由旧的Web根提供,即使应用程序回收也将从旧的根重新加载应用程序。IIS重置是我们设法还原它的唯一方法。就像applicationHost.config已更新(因为IIS管理器显示正确的路径)一样,但是IIS服务器本身可以从以前的配置中运行...
jishi 2013年

我在applicationHost.config中找不到提及,所以我假设它是默认的“ false”?
jishi 2013年

好吧,我在想如果disallowOverlappingRotation = true,那么旧的应用程序池可能由于长时间运行的线程或其他原因而无法关闭。这就是为什么需要IIS Reset才能完全清除它。有趣的问题-会好奇地看到什么答案。
explunit

请记住,应用程序池回收与停止/启动不同。您尝试过这种方法吗?请记住,这将终止所有当前连接,并使该站点不可用(错误500),直到重新启动应用程序池为止。
John Homer 2013年

Answers:


0

从IIS管理器更改物理路径是否正确且立即生效?

您可能想尝试以下命令。不同的语法应具有相同的结果,但也许内部工作原理略有不同,导致IIS接受更改(更好):

C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"


AFAIK在IIS管理器中手动更改(仅以编程方式)时,我们从未遇到任何问题。
jishi 2013年

0

每个站点的应用程序池回收应该足够。这些是独立的过程。文章和流程经常使用iisreset进行宣传。是否可以选择停止/启动一个站点的应用程序池?这是单服务器解决方案吗?您是否要尽量减少站点的停机时间?有一个选项可在配置更改时禁用回收。然后,您可以手动回收。发生问题时,applicationHost.config中列出了什么?


我不确定100%,但是由于IIS管理器列出了新路径,因此我认为applicationHost.config是最新的。但是,当流程回收时,似乎没有使用新配置的值。由于这种情况仅偶尔发生,因此很难及时对其进行故障排除。
jishi 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.