当我尝试从命令行运行此命令来部署asp.net核心网站时:
"C:\\Program Files\\IIS\\Microsoft Web Deploy V3\\msdeploy.exe" -allowUntrusted -verb:sync -sourc
e:contentPath="%USERPROFILE%\ProjectFolder\bin\release\netcoreapp1.1\publish" -dest:contentPath="sitename",ComputerNa
me="https://siteurl.com:8172/msdeploy.axd?site=sitename",UserName='myusername',Password='mypassword',AuthType='Basic' -enableRule:AppOffline -retryAttempts:20
字符串
获取此错误:
Error Code: ERROR_FILE_IN_USE
型
当我停止Web服务器上的网站时,部署成功:
我期待-enableRule:AppOffline
应该强制网站离线。但它仍然保持对网站dll的锁定。
如何强制webdeploy覆盖文件?
2条答案
按热度按时间wtlkbnrh1#
您能否在站点上看到是否正在创建App_Offline. htm?如果是,请尝试重命名为app_offline. htm(全部小写)。这会关闭网站吗?App_Offline.htm文件的AspNetCoreModule中存在区分大小写的错误,请参见here。
ldfqzlk82#
哇。这期对我来说是一只熊。我无法在实际部署命令中获取
-enableRule:AppOffline
。我也无法在pubxml文件中使用它:字符串
(我使用的是IIS v10)
这个Microsoft blog post表明这两个都可以工作,但对我来说没有骰子!
总之,这两篇文章对我帮助很大:
真实的的诀窍是在第二个参考,瓷砖上写着“发布之前”。因此,您需要在主部署之前单独运行
msdeploy.exe
。下面是我使用的PowerShell代码:
型
请注意,我添加了一个短暂的休眠,以使app_offline. htm文件有机会生效。这不是立即的。
我已经将IIS设置为自动删除部署中的app_offline. htm文件,所以我不需要这样做,但如果您需要,可以使用以下代码:
型