This post was most recently updated on December 12th, 2022.
2 min read.This post describes how to fix the error, where when publishing Azure Functions or Azure App Services you get an error like this: “Web Deploy cannot modify the file on the Destination because it is locked by an external process.”
This is luckily another straightforward fix!
Problem
Azure Function Publish fails with a message:
“Web Deploy cannot modify the file on the Destination because it is locked by an external process.”
It is, indeed, caused by some of your files at the target of your publishing being in use, so they cannot be overwritten. Great – an actually accurate error message! Much appreciated.
This seems to apply to Azure Functions CLI version 2.x (currently in beta), and not to the stable versions. At least that’s the state at the time of writing this. There’s even this unresolved issue open about it on GitHub.
Solution(s)
The obvious choice is always to just restart the app service. But if the issue exists every single time when you’re trying to deploy your changes to the server, especially in your development environment, and even more so, if it fails your automated deployments, this solution is cumbersome and boring.
Luckily, you can also just modify the application settings to instruct MSDeploy to rename the files it can’t overwrite – it usually solves this issue! There are 2 ways to do that, which is kind of nice:
Solution 1: Edit the application settings at the target of your publishing
This one’s nice and simple – just navigate to your Azure Function’s/App Service’s application settings, and add the following key-value pair:
MSDEPLOY_RENAME_LOCKED_FILES = 1
It should look like this:
After this, the next web deployment you try should work just fine!
Solution 2: Edit the publishing settings for MSDeploy
Time needed: 10 minutes
You can also edit this setting for MSDeploy directly.
- In case you’re using Visual Studio for development, you can access the settings by clicking “Publish” on your project, and then clicking “Manage application settings” in the new window.
MSDeploy overwrite/rename settings in Visual Studio publishing settings
The selection might be a bit different, based on which Visual Studio version and what kind of a project you’re trying to publish. Below is another example.
Visual Studio 2017 ASP.NET MVC project publishes app settings - By clicking on the link to manage app (service) settings, you’ll get to a window like this, where you can just add the setting by clicking “Add”:
- And add the new setting, something like the below:
And you should be good!
References
Check out this article by the Kudu team – they explain the issue quite well: https://github.com/projectkudu/kudu/wiki/Dealing-with-locked-files-during-deployment
- “Performing cleanup” – Excel is stuck with an old, conflicted file and will never recover. - November 12, 2024
- How to add multiple app URIs for your Entra app registration? - November 5, 2024
- How to access Environment Secrets with GitHub Actions? - October 29, 2024