只有累積,沒有奇蹟

2019年3月24日 星期日

[IIS] 程序無法存取檔案,因為檔案正由另一個程序使用。(發生例外狀況於HRESULT:0x80070020)

問題
今天要在公司測試 Server 建立測試站台,在完成設定 Application Pool 與站台指定位置後按下啟動,跳出'程序無法存取檔案,因為檔案正由另一個程序使用。(發生例外狀況於HRESULT:0x80070020) 錯誤訊息,訊息內容看似有檔案被 lock 住造成啟動異常,但追根究底之後會發現其異常原因蠻單純的以下就針對解決此問題的方式做說明,若有問題歡迎提出一起討論或是給予指導。

解決方案
根據過去經驗,根本原因很有可能是因為 IIS port 被佔用造成啟動異常,因此第一步是先確定目前設定站台的 Port 號是否已使用,步驟如下

查詢 PID
測試站台使用 port 號為 6379,在 windows 中可以下  netstat -ano  指令查看哪個 process 咬住 port
  1. PS C:\> netstat -ano
可以得知 ProvessID 13276 目前佔用 6379 Port

工作管理員
開啟工作管理員切換到詳細服務 tab,從 PID 13276 得知是 vpnkit.exe,後面參數是 -- ethernet hyperv,vpnkit.exe 是 Docker 的一部分,因此需要在 docker 中下指令確認更多資訊
Docker
透過 docker ps 指令確認目前執行的 container 中是否含有佔用 6379 port,得知在測試 server 中 Redis 已佔用此 port由於 IIS 站台設定的 Port 被佔用,Bingo !! 兇手就是 Redis 了
  1. PS C:\WINDOWS\system32> docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. e819ea3d7a7b redis "docker-entrypoint.s…" 5 weeks ago Up 37 minutes 0.0.0.0:6379->6379/tcp redis-lab

處理方式
處理方式就是調整該測試站台的對應 Port,至繫結調整指定新的 Port ,設定完畢後即可正常執行

心得
一開始看到錯誤訊息內容時,以為是在佈署檔案時檔案被咬住造成的失敗,但後來仔細思考 IIS 站台根本還沒起來怎麼可能會有咬住檔案的情形發生,因此就從 Port 思考方向去釐清,經驗證後果然猜測沒錯成功解決,但其錯誤訊息文字乍看之下也太容易猜錯方向,也提醒自己在寫 Log 時也是要關注異常時顯示的內容訊息,否則當其他同事在值班時也會遇到類似問題,也會讓追問題的時間拉長造成他人的不變。

Related Posts:

  • [NETCore] ASP.NET Core 啟動異常 - HTTP Error 500.30 - ANCM In-Process Start Failure 問題  在開發專案時跳出異常訊息,錯誤訊息為  HTTP Error 500.30 - ANCM In-Process Start Failure ,這篇就針對此案例作簡單紀錄與分享,若是有不清楚或是錯誤的地方歡迎討論予糾正。 解決方法  廢話不多說,先看案發現場的錯誤畫面 執行異常的程式代碼,看起來很單純的代碼 public static void Main(s… Read More
  • [IIS] IIS 站台服務異常中止 - HttpEvent 問題 今天同事反應測試主機 IIS Server 無法使用,進到 QA 主機後發現所有的 IIS 服務都已停止,第一直覺就是到事件檢視器查看是否有異常的 Log 資訊,發現事件檢視器紀錄其中來源  HttpEvent  嫌疑重大,以下就針對解決此問題的方式做說明,若有問題歡迎提出一起討論或是給予指導。 解決方案 由於公司測試機對外預設都是以 80 port 為主,無故發生異常是蠻很奇怪,過去… Read More
  • [.NETCore] 在 IIS 執行 ASP.NET Core 應用程式前言 在 IIS 執行 ASP.NET Core 專案時與過去 .NET Framework 運作不同,.NET Core Application 預設以 Kestrel 為 HTTP Server 與 IIS 做溝通,流程可以參考下圖所示;因此要將開發好的 .NET Core 網站專案佈署至 IIS 設定方式是不同的,這篇介紹如何將 ASP.NET Core 應用程式佈署至 IIS 的步驟說明,若有問題歡迎提出一起討論或是給予指導 … Read More
  • [IIS] 程序無法存取檔案,因為檔案正由另一個程序使用。(發生例外狀況於HRESULT:0x80070020)問題 今天要在公司測試 Server 建立測試站台,在完成設定 Application Pool 與站台指定位置後按下啟動,跳出'程序無法存取檔案,因為檔案正由另一個程序使用。(發生例外狀況於HRESULT:0x80070020) 錯誤訊息,訊息內容看似有檔案被 lock 住造成啟動異常,但追根究底之後會發現其異常原因蠻單純的,以下就針對解決此問題的方式做說明,若有問題歡迎提出一起討論或是給予指導。 解決方案 根… Read More
  • [Tool] Log Parser Studio - 搜尋 Log 好幫手前言 這幾天專案遇到些小亂流,必須找到特定條件的應用程式 Log 做資料的確認及重送機制,雖然系統有使用 ELK但由於專案太舊導致 Log 沒紀錄在 ELK 上面,為了快速找到多台應用程式中的 Log 資訊,在搜尋過程中爬 Log 使用 Log Parser 工具來快速搜尋 Log 資訊,避免過度花費人工的方式逐一進行搜尋 Log,這篇文章就針對 Log Paresr Studio 工具做簡單的介紹與說明,若有問題歡迎提出一起討論或是給予指導。 … Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com