This post was most recently updated on December 27th, 2018.Reading Time: 3 minutes.
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!
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 versions 2.x (currently in beta), and not for 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.
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, whis 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 deploy you try, should work just fine!
Solution 2: Edit the publishing settings for MSDeploy
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.
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.
In any case, 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 below:
And you should be good!
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
He's been a developer from 2004 (starting with PHP and Java), and he's been bending and twisting SharePoint into different shapes since MOSS. Nowadays he's not only working on SharePoint, but also on .NET projects, Azure, Office 365 and a lot of other stuff.
This is his personal professional (e.g. professional, but definitely personal) blog.
Latest posts by Antti K. Koskela (see all)
- Azure DevOps – how to package a simple DLL? - October 17, 2019
- How to use UriHelper or NavigationManager in .NET Core 3.0 & Blazor? - October 17, 2019
- Azure DevOps build fails with “The nuget command failed with exit code(1) and error(Cannot determine the packages folder to restore NuGet packages.” - October 16, 2019