Ошибка веб-развертывания в Azure

Я пытаюсь развернуть свое веб-приложение в Azure с помощью этот метод, но периодически я получаю эту ошибку. Есть идеи? Я перезагрузил экземпляр, все еще происходит.

Start Web Deploy Publish the Application/package to https://xxx.cloudapp.net:8172/MsDeploy.axd?site=myapp.Web_IN_0_myapp.Web ...
Updating setAcl (myapp.Web_IN_0_myapp.Web).
Updating setAcl (myapp.Web_IN_0_myapp.Web).
Updating filePath (myapp.Web_IN_0_myapp.Web\bin\myapp.Web.dll).
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5): Warning : An error was encountered when processing operation 'Create File' on 'myapp.Web.dll'.  
Retrying operation 'Update' on object filePath (myapp.Web_IN_0_myapp.Web\bin\myapp.Web.dll). Attempt 1 of 2.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5): Warning : An error was encountered when processing operation 'Create File' on 'myapp.Web.dll'.  
Retrying operation 'Update' on object filePath (myapp.Web_IN_0_myapp.Web\bin\myapp.Web.dll). Attempt 2 of 2.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3847,5): Error : Web deployment task failed.((9/28/2011 8:00:56 PM) An error occurred when the request was processed on the remote computer.)

(9/28/2011 8:00:56 PM) An error occurred when the request was processed on the remote computer.
An error was encountered when processing operation 'Create File' on 'myapp.Web.dll'.
The error code was 0x80070020.
The process cannot access 'E:\approot\bin\myapp.Web.dll' because it is being used by another process.
Publish failed to deploy.
========== Build: 3 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

person Doug    schedule 29.09.2011    source источник
comment
WaIISHost.exe, похоже, заблокирован. Эта dll, по-видимому, определена как точка входа веб-роли. Если я убью WaIISHost.exe вручную, у меня будет около минуты, чтобы скопировать dll, прежде чем WaIISHost автоматически перезапустится. Я пытался переместить точку входа в другую DLL, но этот трюк не поддался.   -  person Doug    schedule 29.09.2011


Ответы (1)


Ответ заключается в том, чтобы создать загрузочный csproj для вашей веб-роли, который ничего не делает. Это будет DLL, которая будет заблокирована WaIISHost.

Затем создайте настоящие веб-проекты как отдельные сайты, используя параметр в файле csdef. После того, как вы это сделаете, вы можете развернуть любой из своих сайтов с помощью веб-развертывания, и они будут работать, если у них нет ссылки на вашу загрузочную dll (поскольку они не будут копировать этот файл)

person Doug    schedule 28.10.2011