2016-01-06 4 views
0

У меня возникает ошибка при развертывании пакета в лазурном веб-приложении.ОШИБКА на Azure Web App Развертывание пакета msdeploy

Приложение представляет собой веб-приложение .NET, скомпилированное для рамки 4.0.

Вот командная строка я использую для создания пакета:

"msdeploy.exe" -verb:sync -source:dirpath="C:\Users\Pierre\Documents\Projets\MyProject\MyApp" -dest:package=C:\Users\Pierre\Documents\MyProject\AzureResourceGroup\MyApp.zip 

Затем на развертывании с помощью лазурных групп ресурсов шаблонов Я получаю следующую ошибку

<?xml version="1.0" encoding="utf-8"?> 
<entries> 
    <entry time="2016-01-06T09:55:20.4679645+00:00" type="Message"> 
    <message>Downloading metadata for package path 'artifacts/MyApp.zip' from blob 'https://ccfstoragee57wqq4suhjoy.blob.core.windows.net'</message> 
    </entry> 
    <entry time="2016-01-06T09:55:20.5148382+00:00" type="Message"> 
    <message>The blob has flag IsPremiumApp:. IsPremiumApp returns False</message> 
    </entry> 
    <entry time="2016-01-06T09:55:20.5617164Z" type="Message"> 
    <message>Downloading package path 'artifacts/MyApp.zip' from blob 'https://ccfstoragee57wqq4suhjoy.blob.core.windows.net'</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6280976Z" type="Message"> 
    <message>No parameters were populated.</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6280976Z" type="Message"> 
    <message>Calling SyncTo() on package.</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6280976Z" type="Message"> 
    <message>Adding MSDeploy.dirPath (MSDeploy.dirPath).</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6280976Z" type="Message"> 
    <message>Adding MSDeploy.dirPath (MSDeploy.dirPath).</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6280976Z" type="Message"> 
    <message>Adding directory (C:\Users\Pierre\Documents\Projets\MyProject\MyApp).</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6280976Z" type="Message"> 
    <message>Adding directory (C:\Users\Pierre\Documents\Projets\MyProject\MyApp).</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.6593714Z" type="Error"> 
    <message>Package deployment failed</message> 
    </entry> 
    <entry time="2016-01-06T09:55:30.7267862Z" type="Error"> 
    <message>AppGallery Deploy Failed: 'Microsoft.Web.Deployment.DeploymentDetailedUnauthorizedAccessException: Unable to perform the operation ("Create Directory") for the specified directory ("C:\Users\Pierre\Documents\Projets\MyProject\MyApp"). This can occur if the server administrator has not authorized this operation for the user credentials you are using. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER. ---&gt; Microsoft.Web.Deployment.DeploymentException: The error code was 0x80070005. ---&gt; System.UnauthorizedAccessException: Access to the path 'C:\Users' is denied. 
    at Microsoft.Web.Deployment.NativeMethods.RaiseIOExceptionFromErrorCode(Win32ErrorCode errorCode, String maybeFullPath) 
    at Microsoft.Web.Deployment.DirectoryEx.CreateDirectory(String path) 
    at Microsoft.Web.Deployment.DirPathProviderBase.CreateDirectory(String fullPath, DeploymentObject source) 
    at Microsoft.Web.Deployment.DirPathProviderBase.Add(DeploymentObject source, Boolean whatIf) 
    --- End of inner exception stack trace --- 
    --- End of inner exception stack trace --- 
    at Microsoft.Web.Deployment.FilePathProviderBase.HandleKnownRetryableExceptions(DeploymentBaseContext baseContext, Int32[] errorsToIgnore, Exception e, String path, String operation) 
    at Microsoft.Web.Deployment.DirPathProviderBase.Add(DeploymentObject source, Boolean whatIf) 
    at Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext) 
    at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject) 
    at Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject) 
    at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) 
    at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source) 
    at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) 
    at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId) 
    at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions) 
    at Microsoft.Web.Deployment.DeploymentObject.SyncTo(String provider, String path, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions) 
    at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentWellKnownProvider provider, String path, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions) 
    at Microsoft.Web.Deployment.WebApi.AppGalleryPackage.Deploy(String deploymentSite, String siteSlotId) 
    at Microsoft.Web.Deployment.WebApi.DeploymentController.&lt;DownloadAndDeployPackage&gt;d__b.MoveNext()'</message> 
    </entry> 
</entries> 

Похоже лазурный ресурс группа пытается воссоздать мою иерархию локальных папок в лазурном веб-приложении.

С другой стороны, используя пакет, созданный с помощью Visual Studio -> Опубликовать -> Пакет отлично работает. Вручную создание пакета из VS не является вариантом, и я не могу понять, почему он терпит неудачу, когда используется msdeploy.exe !!

+0

Какая версия MsDeploy вы используете? – juvchan

+0

Версия 7.1.618.0, расположенная в C: \ Program Files (x86) \ IIS \ Microsoft Web Deploy –

ответ

1

Попробуйте использовать путь к базе данных вместо dirpath, например.

"msdeploy.exe" -verb:sync -source:contentpath="C:\Users\Pierre\Documents\Projets\MyProject\MyApp" -dest:package=C:\Users\Pierre\Documents\MyProject\AzureResourceGroup\MyApp.zip 
+0

Такая же проблема. Когда я заглядываю в архив, в файле archive.xml все еще вижу директивы с pull path contentPath path = "C: \ Users \ Pierre \ Documents \ MyProject \ MyApp" и MSDeploy.dirPath path = "C: \ Users \ Pierre \ Documents \ MyProject \ MyApp. –

+0

Когда вы пробовали путь к контенту, вы сначала удалили старый zip? Если нет, то он, вероятно, обновил его, оставив некоторые из плохих вещей раньше. Убедитесь, что вы запустили его. –

+0

Я попробовал снова сегодня, удалив предыдущий архив до и воссоздав его с нуля с помощью «-source: contentpath». Но все-таки то же самое .... –

3

Такая же проблема здесь. Уже несколько дней борется, и выявил, что проблема заключается в сериализованном и закодированном значении атрибута MSDeploy.MSDeployProviderOptions в файле archive.xml. Значение содержит исходную структуру папок, из которой были созданы упакованные файлы, а Web Deploy в Azure пытается воссоздать одну и ту же структуру в целевой системе. Запуск msdeploy с параметром «-replace» при создании пакета абсолютно не влияет на эти сериализованные параметры (может быть, ошибка в msdeploy?).

UPDATE

Вот что, наконец, работал для меня:

msdeploy.exe 
    -source:iisApp='C:\Users\alex\AppData\Local\Temp\PublishTemp\TheWorldVS47\wwwroot' 
    -dest:package='C:\Code\TheWorldVS\PublishOutput\package.zip' 
    -verb:sync 
    -enableLink:contentLibExtension 
    -replace:match='C:\\Users\\alex\\AppData\\Local\\Temp\\PublishTemp\\TheWorldVS47\\',replace='website\' 
    -retryAttempts:2 
    -disablerule:BackupRule 
    -declareParam:name="IIS Web Application Name",kind="ProviderPath",scope="IisApp",match="^C:\\Users\\alex\\AppData\\Local\\Temp\\PublishTemp\\TheWorldVS47",defaultValue="website" 

Эта последняя установка, что сделало его работу, поручив MSDeploy в лазури, что любые проявления этого длинного пути локального должен быть заменен «веб-сайт» по умолчанию. Предположим, вы также можете настроить это значение, предоставив для него переопределение в шаблоне ARM json в свойстве setParameters вашего блока расширения MSDeploy.