簡體   English   中英

由於文件鎖定(msvcr100.dll),TFS CI構建到Azure Web App(App Service)失敗

[英]TFS CI build to Azure Web App (App Service) fails due to file locking (msvcr100.dll)

問題

嘗試從TFS CI發布到Azure Web App時出現部署錯誤。 文件被鎖定,這會阻止構建更新。

症狀

  • 手動發布(Web部署從Visual Studio內部發布)通常會成功。
  • 停止Web應用程序和發布允許它成功,但是如果我們需要每次都需要停止和啟動Web App,這就會破壞我們的CI。
  • CI發布到Web角色和工作者角色似乎沒有此問題,我們只在發布到Web Apps(以前的Web站點,當前的Azure門戶術語現在是App Service)時才會發布它。
  • 只有通過TFS從CI版本發布才能以這種方式一致地失敗。

錯誤

Web部署任務失敗。 (Web部署無法修改目標上的文件'msvcr100.dll',因為它被外部進程鎖定。為了允許發布操作成功,您可能需要重新啟動應用程序以釋放鎖定,或者使用適用於下次發布嘗試的.Net應用程序的AppOffline規則處理程序。有關詳細信息,請訪問: http//go.microsoft.com/fwlink/?LinkId = 221672 #ERROR_FILE_IN_USE。)

鏈接中的信息不是很有幫助。

ERROR_FILE_IN_USE診斷 - 無法覆蓋或刪除目標文件,因為它當前正在使用中。 解決方案 - 確保在執行同步之前未使用目標文件。 如果要將內容同步到IIS 7或更高版本上托管的網站(使用appHostConfig,iisApp或contentPath提供程序),請考慮通過啟用appOffline規則在同步期間使應用程序脫機。

嘗試過的決議

編輯

如何在發布時使Web應用程序脫機? 處理使用EnableMSDeployAppOffline配置使應用程序脫機 - 遺憾的是,只有在通過Visual Studio(而不是CI)執行WebDeploy時才支持此配置。

您可以使用CI中的Web Deploy v3來部署Web應用程序。

在Web Deploy V3中,我們添加了支持,以便在發布之前自動使ASP.Net應用程序脫機。 如果用戶想要確保他們的應用程序沒有鎖定文件(例如SQL CE sdf文件,一次只允許一個文件連接)被覆蓋,或者他們想要確保訪問者他們的網站不會影響發布過程。 發布過程完成后,將刪除App_Offline.htm文件,該站點將再次聯機。

或者,您可以添加以下PowerShell腳本以將Web應用程序部署到Azure:

    param($websiteName, $packOutput)

    $website = Get-AzureWebsite -Name $websiteName

    # get the scm url to use with MSDeploy.  By default this will be the second in the array
    $msdeployurl = $website.EnabledHostNames[1]


    $publishProperties = @{'WebPublishMethod'='MSDeploy';
                            'MSDeployServiceUrl'=$msdeployurl;
                            'DeployIisAppPath'=$website.Name;
                            'Username'=$website.PublishingUsername;
                            'Password'=$website.PublishingPassword}

    Write-Output "Stopping web app..."
Stop-AzureWebsite -Name $websiteName

Write-Output "Publishing web app..."
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1"

. $publishScript -publishProperties $publishProperties  -packOutput $packOutput

Write-Output "Starting web app..."
Start-AzureWebsite -Name $websiteName

參考來自: https//msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5

新的“部署AzureRM Web App”任務有一個選項可以使應用程序脫機,這將防止此錯誤。

查看截圖復選框

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM