2014-01-12 58 views
3

我有一個我發佈到Azure網站的Web應用程序。有時它會發布沒有問題。但是,更多情況下,它會在特定的二進制文件(一種業務邏輯dll)上失敗,指出該文件正在使用中。 快速谷歌後;這似乎意味着該文件正在服務器端使用。這很奇怪,因爲當時對這個網絡應用肯定沒有請求。Azure網站發佈失敗使用中的文件

是否有一些配置選項需要設置某處強制卸載dll?我之前發佈過Azure網站,從未見過這種情況。

+0

您也可以使用部署插槽來解決此問題。使用生產設置創建一個新的部署插槽並將其部署到新的新實例,然後交換。 – neo112

回答

1

您應該首先了解一下IIS和Web Deploy。

看看this SO Question它是基本上描述你有問題。一般來說,使用該組件有點奇怪。不知道這個的確切原因,但它在你的程序集中的某個地方,更重要的是它如何被使用。

作爲建議 - 在部署(停止和啓動)之前回收站點。或者嘗試在網站停止時部署(我懷疑這是可能的)。

1

我們曾經有過類似的情況。它使用以下步驟解決。

  • 使用的客戶端從門戶

  • FTP停止站點到站點如FileZilla。您可以通過查找publishMethod =「FTP」部分從發佈配置文件獲取FTP URL &憑證。

  • 瀏覽到網站/ wwwroot文件夾

  • 刪除鎖定的文件(S)

  • 啓動網站

  • 重新部署在門戶網站部署選項卡立即現場。

0

爲我工作的唯一解決方案:刪除該網站,然後重新部署(名稱相同)。 FTP信譽繼續發揮作用。

其他的事情我想,沒有工作:

  • 停止網站,並嘗試通過FTP或通過捻命令行刪除(或重命名)鎖定裝配 。通過Kudu獲得拒絕訪問錯誤Kill w3wp 。大會依然鎖定。將DLL重命名爲不同的文件 並重新部署。不知何故,應用程序不會啓動說它不能 訪問鎖定的文件,即使其他程序集 都不應再引用它。
0

檢查出How to take web app offline while publishing爲可能的解決方案。基本上包括

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline> 

你的pubxml文件應該可以緩解這個問題。但請注意,在所有情況下,這可能無法正常工作,特別是對於ASP.NET Core,this thread on GitHub就證明了這一點。

0

顯然,發佈時上傳到服務器的App_Offline.htm文件實際上應該命名爲app_offline.htm(即小寫)。系統不以不區分大小寫的方式識別文件是一個錯誤(在this GitHub issue的某處確認)。

所以,如果添加<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>.pubxml文件不起作用,而且也不重啓Azure的Web應用程序,嘗試重命名App_Offline.htmapp_offline.htm,並再次發佈。它應該工作。

PS:這個錯誤應該是在2017年1月晚些時候在.NET Core中修復的(請參閱鏈接問題),但我無法弄清楚問題是否是Azure中的.NET版本或其他內容(this thread didn'幫助我)。如果您正在閱讀本文,我還沒有弄明白,而且我仍然每次都重命名該文件。 :p如果您知道需要做些什麼來解決這個問題,請評論!