首頁 三十天.NET❤️Azure漸進式開發專案 輕量高效.NET Core開源Blog引擎:Miniblog.Core
首頁 三十天.NET❤️Azure漸進式開發專案 輕量高效.NET Core開源Blog引擎:Miniblog.Core
×

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10206081
 前面介紹完.NET開發者如何在Azure Debug,今天進階研究調校效能。  上線專案如何追蹤效能瓶頸,如何改善是一件專業、而且困難的事情。諸如:資料庫慢查詢,沒有建立有效索引,沒有使用快取造成資料庫負擔等。  而 Azure 同樣提供AI自動化服務,讓我們可以省下一些複雜動作,做到調校資料庫 SQL DataBase 效能目的,這就是Automatic Tuning功能。 【舉例1:幫忙建立索引】 現在有一個文章表格post,資料結構: ID,發布日期(pubdate),標題(Titl ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205843
之前發生使用XML存取資料方式,在本機上傳文章,出現本機顯示上傳成功卻沒有文章問題,後來調查原來是時間格式問題。 舉例: miniblog時間使用UTC格式保存資料,但是重啟伺服器後XML讀取文章資料的時間Kind是Local 在是否加入文章cache的判斷中使用判斷 文章發布時間 < DateTime.UtcNow 才會加入cache。但是因為台灣時區是GMT + 8 區域,所以結果是文章發布時間 > DateTime.UtcNow,所以判斷結果是false。 假如修正此問題,可以使用To ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205844
 延續之前文章,正式情況中有可能發生專案無法初始化啟動情況,這時候遠端Debug、ApplicationInsights都無法使用。  舉例,初始化錯誤後造訪雲端網站出現 An error occurred while starting the application.訊息:  查看ApplicationInsights也沒有錯誤失敗訊息。  對於這類初始化異常,Azure提供使用Kudu工具到 LogFiles 資料夾查看 eventlog.xml 錯誤訊息。 查詢方式: 在app se ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205468
今天加一個小功能,只需要改appsettings.json的連結字串,達到替換資料庫功能。 邏輯: 1.藉由判斷MSSQLConnString跟MSSQLConnString屬性的是否有值,決定使用哪種方式存取資料。 { "blog": { "SQLiteConnString":"DataSource=app.db", "MSSQLConnString": "Data Source=(localdb)\\MSSQLLocalDB;Integrated Security=SSP ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205454
  今天延續前兩篇文章對Debug做一個超進化,加上Azure獨有Snapshot神器:Exception偵錯快照。   是否讀者有過這樣經歷,使用者說: "XXX功能有BUG啦,我現在都不能使用,幫我看甚麼問題!" ,結果幫忙處理時,發現沒有任何問題。這是因為當時的時間、環境、變數都不一樣了,要還原一樣情景測試是非常困難的一件事,可能某個變數的不一樣,就會造成結果的不同。要避免上述情況,通常要寫複雜程式,做好LOG保存當下的變數值。   而Azure提供Snapshot Exception偵 ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205239
  在正式專案中密碼少不了需要加鹽處理,其中最常見的就是HASH。HASH算法是單向的,而且無法被反向計算。源頭數據改動一點點,HASH的結果也會完全不同。這樣特性很適合保存、驗證密碼。   但只有單純hash加上密碼簡單的話,怪客可以用暴力比對方式,得出你的密碼,所以在Miniblog使用廣受認證的PBKDF2方式加密。 Code: private bool VerifyHashedPassword(string password, IConfiguration config) { ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10205198
延續昨天文章,接著介紹如何在Azure使用Application Insights Debug。 【情境】:故意寫一個除0錯誤來測試Debug功能 public IActionResult Index() { var zero = 0; var error = 1 / zero; return View(); } 推上雲端正式環境中無法查看錯誤內容,這時候我們使用以下方式,來Debug問題點: 【方式1】:使用之前文章介紹的Analytics Query查詢,大致 ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10204899
今天遇到IT鐵人賽文章同步,保存XML資料出現截斷資料異常hexadecimal value 0x1D is an invalid character,檢查發現出錯在SaveAsync。 public override async Task SavePost(Post post) { string filePath = GetFilePath(post); XDocument doc = new XDocument( new XEleme ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10204873
  陪伴程式人開發生活中,最常見的就是BUG,所以如何Debug是格外重要的技能。在Azure App Web Service提供類似 偵錯-附加至處理序(【附1】) 方式,讓開發人員可以在本機遠端Debug上線的專案。 情境舉例:   阿明今天將好不容易開發好的專案上線到雲端,結果馬上接到訊息通知,說線上專案驗證資料是否包含空白space字串功能失效,導致包含空白的髒資料保存到資料庫中。   阿明想說怎麼可能發生這樣事情,打開VS重新看了幾次,還是找不出問題點,但是線上專案測試確實包含空白 ...

IT鐵人賽連結:https://ithelp.ithome.com.tw/articles/10204585
  之前W3CMiniblog.Core.W3C發佈在線上都使用XML方式存取資料,SQLite只在本機測試過。最近想使用SQL處理資料,想換成.NET Core + SQLite來存取,結果發生意外。   sqlite.db檔案放在根目錄,連線字串使用DataSource=app.db,運行本機端正常,但是推上Azure Web APP結果掛掉。   因為線上預設不會顯示Exception詳細資訊,也不應該顯示。   這邊使用昨天文章方式Analytics Query分析需要的Log資料查 ...