"Publishing Failed" for an Azure Function

Fixing the error “Web Deploy cannot modify the file on the Destination because it is locked by an external process.”

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! 

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 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.

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, 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:

MSDeploy overwrite/rename application settings
MSDeploy overwrite/rename application settings

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.

MSDeploy overwrite/rename setting in Visual Studio publishing settings
MSDeploy overwrite/rename setting 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 publish app settings
Visual Studio 2017 ASP.NET MVC project publish app settings

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”:

Application Settigns dialog
Application Settings dialog

And add the new setting, something like below:

Adding a new Application Setting
Adding a new Application Setting

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

mm
0 0 vote
Article Rating
Subscribe
Notify of
guest
3 Comments
most voted
newest oldest
Inline Feedbacks
View all comments