| 閱文時長 | | 0.55分鐘 | 字數統計 | | 884.8字符 |
| 主要內容 | | 1、引言&背景 2、解決詳細步驟 3、宣告與參考資料 | ||
| 『.NetCore程式寄托于IIS部署時提示:行程無法訪問該檔案,因為它正在被其他行程使用,』 | |||
| 撰寫人 | | SCscHero | 撰寫時間 | | 2022/2/17 PM9:42 |
| 文章型別 | | 系列 | 完成度 | | 已完成 |
| 座右銘 | 每一個偉大的事業,都有一個微不足道的開始, | ||
一、引言&背景 完成度:100%
a) 應對問題
.NetCore程式寄托于IIS部署時提示:行程無法訪問該檔案,因為它正在被其他行程使用,如圖,博主是英文版的WindowsServer系統,提示:The process cannot access the file because it is being used by another process.
b) 環境說明
- .NetCore2.2開發框架
- Internet Information Services(Version 8.5.9600.16384)
- Windows Server 2012 R2
二、解決詳細步驟 完成度:100%
a) 常規步驟
先說常規的步驟,能解決大多數時候的問題:一般報檔案使用于另外的行程,我們第一反應就是停服務、停App pool中的App,PS:如果不想通過停服務來部署,那么可以通過設定web.config中的aspNetCore的hostingModel屬性,如果值是InProcess則為行程內托管,修改為"OutOfProcess"則為行程外托管,可以嘗試熱部署,
<aspNetCore processPath="dotnet" arguments=".\AppName.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess"/>
更多引數可參閱三章節的官方檔案,
b) 其他Case
但如果常規步驟無法解決此問題,即服務停了,應用程式池應用也關了,還是報檔案占用,且不知道是什么行程占用了,又沒法重啟服務器,那么以下步驟可能有用:
- 備份一下舊檔案,然后快捷鍵DELETE洗掉,這時候Windows(英文版)會提示The action can't be completed because the file is open in [XXXXX],比如如圖,博主的dll檔案就被行程IIS Worker Process使用了,
- 那么知道了是被什么行程使用了,我們則到任務管理器查看行程List,如圖:博主的情況比較復雜,因為服務器上跑了多個IIS服務,且是多用戶的,因此需要查看各個用戶的行程,以及判斷多個IIS Worker Process中哪個是我們部署服務的行程,這里教大家一招:默認的任務管理器是不會展示命令列(Command line)的列的,需要手動右擊Title調出來,通過命令列-ap引數后的AppName,我們可以知道是哪個行程鎖住了,然后End Task即可,
三、宣告與參考資料 完成度:100%
微軟官方檔案:關于web.config的組態檔說明
原創博文,未經許可請勿轉載,
如有幫助,歡迎點贊、收藏、關注,如有問題,請評論留言!如需與博主聯系的,直接博客私信SCscHero即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/427369.html
標籤:.NET Core
