只有累積,沒有奇蹟

2019年5月22日 星期三

[NETCore] ASP.NET Core 啟動失敗 - failed to start process with commandline

問題 
新專案使用 ASP.NET Core 2.2 開發完成並佈署至 Production 機器,在瀏覽網頁時跳出應用程式無法正常啟動的畫面,錯誤訊息為 'HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure'  ,不知為何最近跟 ASP.NET Core 啟動失敗特別有緣分 (一直常遇到這類的事情 XD),這篇文章就針對此問題的解決方式做簡單分享,若是有不清楚或是錯誤的地方歡迎討論予糾正。

解決方案
異常發生時畫面如下
根據錯誤訊息提供的線索,異常原因是因為啟動失敗造成 (Startup failure),在應用程式的 Log 中也並未記錄更多 log 資訊,在之前的文章 IIS 執行 ASP.NET Core 應用程式 中有提到過,要在 IIS 執行應用程式需安裝 ASP.NET Core 模組,才可以順利在 IIS 執行應用程式,但由於新機器有安裝過 .NET Core 模組因此排除此可能性,下一步就是到事件檢視器查看是否有更詳細的錯誤訊息,果不其然在事件檢視器中有記錄一連串的錯誤內容,錯誤來源都是 IIS AspNetCore Module V2
其錯誤訊息內容為 'Application '/LM/W3SVC/2/ROOT' with physical root 'D:\Web\project_folder\' failed to start process with commandline 'dotnet.exe .\project.dll' with multiple retries. The last try of listening port is '45353'. See previous warnings for details. ,啟動應用程式時呼叫 dotnet.exe 發生異常而啟動失敗,甚麼是 dotnet.exe ? 為什麼在 ASP.NET Core Application 啟動時會用到 ? 可以透過一張圖來說明
當應用程式啟動的時候,在 Windows 中會透過 dotnet.exe 對 ASP.NET Core 應用程式進行操作,如果有興趣了解更多可以參考 ASP.NET Core In Process Hosting on IIS with ASP.NET Core 2.2 有更詳細的說明。回到這邊,自己對此錯誤訊息的理解為要透過 commandline 起某個 ASP.NET Core 應用程式時也就是 dotnet.exe 時發生錯誤,嘗試幾次依舊錯誤就會跳出異常的畫面,要解決此問題可以透過下列任一種方式

調整 web.config
錯誤訊息中提到路徑問題中 dotnet.exe 執行失敗,dotnet.exe 正確的位置在 Windows 中應該預設安裝在  C:\Program Files\dotnet\dotnet.exe  路徑底下,而並不是在專案底下的路徑,因此開啟專案的 web.config 調整 aspnetcore 的 processPath 路徑改為正確的 exe 位置,C:\Program Files\dotnet\dotnet.exe,接著儲存 web.config 檔案。

設定 Application Pool
上述方式雖然可以解決問題,但如果每一次佈署完畢之後都要透過調整 web.config 方式實在有點不妥,因為每次 release 完都要在調整設定檔內容,可以說是相當不方便。另一種作法是修改 IIS 中的 Application 設定,設定步驟如下
Step 1 : 開啟IIS
Step 2 : 選擇應用程式集區內容,點選進階設定
Step 3 : 載入使用者設定檔改為 True
以上兩種方式都可以解決啟動失敗的問題,若是有更好的方法也歡迎提出來一起討論
Thanks & Happy Coding :)

參考
ASP.NET Core In Process Hosting on IIS with ASP.NET Core 2.2 

2019年5月17日 星期五

[Tool] JSON Viewer Awesome - 理解 JSON 結構的好幫手

介紹
Json (JavaScript Object Notation) 是一種輕量級的資料交換格式,方便開發者在開發與閱讀,與早期使用的 XML 相比在進行資料交換時,沒有其多餘的格式可以降低傳輸封包的大小,增加其封包傳遞的效率 (...不自覺透露出年紀了),這些都是給電腦看不是給人看得,如果開發者需要確認 Json 元素的值是否正常時,就另外需要透過工具達到,今天要分享的是 Chrome 擴充套件 - JSON Viewer Awesome,可以在瀏覽器上格式化 Json 內容幫助開發者在閱讀,方便快速找到想確認的資訊。

下載
由 Rahul Baruri 開發,下載請到 Chrome Extension 網頁安裝 : 傳送門

功能
Json Viewer Awesome 提供三種功能,分別是 Tree、Chart 以及 JSON Input,三種功能分別可以在右上角進行切換的動作

Tree
將網頁呈現內容進行 Json Format 的動作,舉例來說以下是未使用前的顯示文字,內容多的時候就難以閱讀想找需要的資訊也不方便,如果想要找到需要的資訊也是不容易的
使用 Json viewer Awesome 工具格式化之後,在閱讀上整體就清楚許多,並以節點的方式呈現 (特別喜歡黑色背景 !!)

Chart
這功能是我最愛的功能,其他的 Json 擴充套件沒有的,有時可能會因為第三方資訊回傳 Json 內容非常多,或是想要進一步了解回傳格式時的節點長相時,就可以將 response Json 資訊轉換為 Chart 做進一步確認的動作,也可以將其節點進行縮放與展開,背後是用 svg 實作 chart 功能

Json Input
顧名思義此功能提供使用者輸入需要 format 的格式,也是每個 Json 擴充套件都有的功能,按下 parser Json 之後會在 Tree 進行瀏覽的動作

感想
工欲善其事,必先利其器,在 Google Extension 也有類似的工具向是 Json View 提供類似的功能,或是之前同事推薦的線上網頁 Json Editor Online 將內容 paser 的動作,但比較過後我個人是更喜歡 JSON Viewer Awesome 套件,在此推薦給有此需求需要的朋友,在選擇上也多一種參考 :)

2019年5月15日 星期三

[NETCore] ASP.NET Core 3.0 Preview 體驗

前言
ASP.NET Core 3.0 preview 5 已經推出,在 3.0 最大的變化是對 windows desktop application 的支援,
以及支援 .NET Standard 2.1 和可以在 Visual Studio 2019 上使用 C# 8.0 功能,這篇文章紀錄安裝 ASP.NET Core 3.0 SDK 以及 升級 Visual Studio 2019 Update,若有問題或是錯誤的地方歡迎提出來一起討論。


Visual Studio 2019 
經過一段時間的 preview 與測試,VS 2019 在 2019 年 4 月開放下載,如果沒有安裝 Visual Studio 2019 可以到官方網站下載
  • Community : 傳送門
  • Professional :  傳送門
  • EnterPrise :  傳送門

  • 在 Visual Studio 2019 提供許多好用的新功能,Visual Studio 2019 的新功能 官網文章整理詳細及新功能介紹,有興趣了解的可以透過文章及影片內容深入了解,個人整理重點如下

  • IntelliCode : 搜尋在 GitHub 上超過 2000 顆星的 open source project 進行訓練提供開發時建議
  • 重構 : 按下 Ctrl+.,會針對此段程式碼提出重構的建議
  • Live Share : 可以跟朋友同時在 IDE 一起閱讀、開發及針對現有程式碼進行除錯
  • 偵錯時搜尋 : 偵錯時可以針對加入的變數進行關鍵字搜尋
  • 快速搜尋 : Ctrl+Q 快速搜尋支援模糊搜尋
  • 程式碼清除 : 根據所設定的格式進行程式碼的整理 
  • 新的啟動介面 : 新的啟動介面,可以更快的建立專案以及 fork Git source code 

  • 升級 Visual Studio 2019
    手邊的開發筆電 VS2019 為最早的版本,因此如果要使用 ASP.NET Core 3.0 的話官方建議需要更新 Visual Studio 最新版才可使用,可以透過 選單 > Help > Check for update 查看目前版本升級,更新畫面如下

    .NET Core 3.0  
    安裝 / 升級 Visual Studio 2019 後還需安裝 .NET Core 3.0 SDK ,如果開始使用 ASP.NET Core 3.0 preview 則需要安裝相對應的 SDK : 下載傳送門 ,
    當完成 Visual Studio 2019 升級也安裝所需要的 ASP.NET Core 3.0 SDK,接著開啟 VS2019 新增專案,發現 Platform 選項中最新只到 2.2 並沒有稍早安裝的 3.0 ? 
    莫急莫慌莫害怕,不是因為沒裝好或是安裝步驟出問題,原因是因為在過去如果安裝新的 SDK Preview 版本時,Visual Studio 工具都會使用新的 SDK 為主,可能會造成相容性的問題發生,為了改善這問題從 Visual Studio 2017 15.9 版本開始,Visual Studio 工具都預設會以穩定的 SDK 版本為主(也就是 Preview 的不會出現),如果有安裝 Preview 的 SDK 時可以透過設定進行調整,設定方式為 Projects and Solutions > .NET Core > 勾選 Use previews of the NET Core SDK
    設定完畢之後,在重新開啟 Visual Studio 就可以看到可以選擇 ASP.NET Core 3.0 選單
    另外也可以觀察到在選擇 .NET Core 2.2 與 .NET Core 3.0 時版本會有所差異,在新增 Web Application 選擇 .NET Core 3.0 樣板會多下列項目
  • gRPC Service
  • Blazor (Service Side)
  • Razor Class Library 

  • gRPC 是 Google 推出的新式高效能輕量型 RPC 架構;Blazor 則是 C# 結合 WebAssembly 的技術,詳細可以參考 ASP.NET Core 上的 gRPC 簡介 說明。

    C# 8.0
    ASP.NET Core 3.0 支援 C# 8.0 語法,在更新完 Visual Studio 2019 至最新版以及安裝完 .NET Core 3.0 SDK 後可以在 Visual Studio IDE 進行設定,設定步驟如下
    Step 1 : Project > Properties
    Step 2 : 左邊 Tab 選擇 Build
    Step 3 : Advance > Language version
    對於 C# 8.0 新增的改變有興趣可以看官網 MSDN 介紹,What's new in C# 8.0
    由於自己尚未接觸過這部分,日後如果有實際使用過會在分享相關的代碼 :)

    最後,附上影片 Visual Studio 2019 Launch: What’s Coming with .NET Core 3.0 結束這篇介紹,期待 3.0 正式 Release 的一天 :)

    參考
    .NET Core tooling update for Visual Studio 2017 version 15.9
    .NET Core 3.0, VS2019 and C# 8.0 for ASP .NET Core developers
    Quick Tip: How to Try .NET Core 3.0 in Visual Studio 2019
    Creating First ASP.NET Core 3.0 App with Visual Studio 2019 Preview

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

    Design by Anders Noren | Blogger Theme by NewBloggerThemes.com