跳到主要內容

發表文章

目前顯示的是 2021的文章

SonarQube 無法掃描 Dotnet 5.0/6.0專案, 出現 The main branch of this project is empty.

在用SonarQbue 做原始碼掃描時,某一個專案出現 "The main branch of this project is empty."。 原本還在懷疑是不是檔案編碼造成,全部改成有BOM的UTF-8後還是不行;最後用另一個成功專案的csproj改名字後,就可以正常掃描。 所以只好一個一個選項去比對修改再用Sonar-Scanner去掃,最後發現和選項無關,是 Microsoft.NET.Test.Sdk 這個package造成,猜想應該是在Nuget套件管理主控台更新套件時,不小心把測試元件加到主專案,先把這個package從 csproj移掉就解決。

憑證更新後無效?是怪異的快取?

 原本我用 dehydrated 取得 Let's Encrypt 的免費憑證,想說照官網改用 certbot ,怪事就這麼發生了。 怎麼改都是原來的日期,certbot根本沒生效? 索性把Nginx重開也沒用,問題一定是在我本機。接著把Chrome的快取清空,再關閉Chrome重開,結果還是一樣。火大開出Edge,結果還是相同,開始懷疑人生了,這時想到我還有Firefox沒有連過這臺Server,結果.... 確實有更新,我被Chrome/Edge耍了。 原本就此可以直接無視,剛才吃飯時想到如果用無痕視窗呢? 結果就有2個不同的結果,傑克,這實在太神奇了!

ASP.Net 遇到 JSON 格式的日期會差8小時問題

最近開始試著學 ASP.Net Core ,用 .Net 5 寫WebAPI。用前端的 DatePicker 選日期會變成前一天,再追下去,居然是DateTime都會少8小時,這到底是怎麼一回事呢?可能是我之前都沒有用MVC的Model去解析JSON物件,所以沒有發生。 用 股溝 搜尋在 暗黑大的文章 有提到這問題,但我不太相信微軟會犯這種低級錯誤,所以再繼續追下去真正原因。 先假設 Model 裡有一個 public DateTime StartDate {get; set;} WebAPI接收到前端吐回的JSON Date 字串後,會解析成  StartDate.Kind 會是 DateTimeKind.Utc; 這沒錯,若是 DateTime now = DateTime.Now; now.Kind 是 DateTimeKind.Local 所以存到SQL Server時,變成UTC時區,而SQL Server讀取的時候,會依照儲存的時區把資料吐出來,再自己把DateTime.ToString("yyyy/MM/dd")時,就會變成前一天了@@。 目前我的解法是在儲存到SQL Server前, StartDate = StartDate.ToLocalTime();  若是在讀取時轉換應該也行啦,但我的情況和暗黑大一樣,使用者都在這小島內,不會跨時區,用最簡單的方式處理就好。就算有人跨時區使用, DateTime.ToLocalTime() 也不會有錯誤。 結案收工。

Dot Net Nuget Error : error NU1202 Microsoft.OpenApi 1.2.3 不支援任何目標架構

最近編某一個專案,用OpenApi一直出現「Microsoft.OpenApi 1.2.3 不支援任何目標架構」,這樣奇怪的錯誤。猜想是某個設定檔錯誤,於是產生新專案來測試: 我用的是2021/5最新的dotnet 5.0.203,到另一臺電腦測試完全沒問題。所以想應該是元件註刪之類的問題,結果我錯了,在偉大的 StackOverFlow找到答案 ,清除NuGet快取:   nuget locals all --clear 清空快取後,就恢復正常,可以回來工作,繼續爆肝。

FreeBSD 12 mount 掛載 Windows 分享 SMBFS

要在FreeBSD 12 mount Windows 分享目錄,也就是 SMBFS,因為中文檔名發生問題,所以再寫一次這主題。   因為密碼只能用互動式,若要自動就得寫在 /etc/nsmb.conf 以前叫 /etc/nsmbrc.conf ,也可以寫在自己的 ~/.nsmbrc,這裡的伺服器名稱和使用者名稱請用大寫 格式 [伺服器名稱:使用者名稱] password=密碼  指令為 mount_smbfs -N -E UTF-8:UTF-8 //使用者名稱@伺服器名稱/分享名稱 /掛載點 若 伺服器名稱沒有對應,可以在這裡指定 mount_smbfs -N -I 伺服器IP -E UTF-8:UTF-8 //使用者名稱@伺服器名稱/分享名稱 /掛載點 要注意若沒有加上 -E UTF-8:UTF-8  ,中文會出不來 但我的目標是開機便自動掛載,所以寫在 /etc/fstab  //使用者名稱@伺服器名稱/分享名稱 /掛載點 smbfs rw,-EUTF-8:UTF-8,-N 0 0 這樣下次重新開機就自動掛載 Windows 分享

2021年使用Vite開發Vue 3網頁

尤雨溪開發的產品特色就是執行速度很快 Vite 的速度也是飛快,但前端技術一直在改變,若不使用正確的方式,光是node modules相依性就處理不完,特此紀錄現在2021年的vite用法。 以前是create-vite-app,現在改為 yarn create @vitejs/app  ,更快的方法是輸入  yarn create @vitejs/app 目錄名 或是 yarn create @vitejs/app 目錄名 --template vue-ts   註:現在vue 3相容性還是偶有問題,像我 vue add bootstrap 之後,會造成 yarn build 出錯 所以要把package.json裡 "build": "vuedx-typecheck . && vite build"改成"build": "vite build" 如果發現使用TypeScript出現以下錯誤: 就在專案根目錄增加一個shims-vue.d.ts declare module '*.vue' { import type {DefineComponent, defineComponent} from 'vue'; const component: DefineComponent<{},{}, any> export default component; } 就可以看到 如果還有問題,就是要調整其他的設定,待補...

在Windows Server 2016安裝ASP.Net 1.1

 因資安要求,收到要將Server 2008 R2 (含) 之前所有的Server升級,其實去年我就把 Server 2003 以下全部淘汰,但是因為有些程式太舊,用Server 2008 R2 安裝比較方便,才留下2臺Server 2008 R2 。 今天要處理這臺的服務是 ASP.Net 1.1 + ASP ,先用 Windows Server 2019試過完全沒辦法安裝 .net framework 1.1 ,只能用 Windows Server 2016安裝,所以十年後再不升級,這程式就得廢掉。 步驟: Windows Server 2016 基本設定 使用 伺服器管理員 啟用 .net framework 3.5 和 IIS ,到功能頁要選擇ASP.Net 及所需的ASP 等 安裝 .net framework 1.1  下載並依序安裝  Microsoft® .NET Framework 1.1 版可轉散發套件  、 Microsoft .NET Framework 1.1 Service Pack 1 、 .NET Framework 1.1 Service Pack 1 ASP.NET 安全性更新 手動啟用 ASP.Net 1.0 及 2.0,如果只安裝 ASP.Net 1.1是不夠的 使用管理員權限打開 『cmd.exe』 , mklink /d C:\Windows\Microsoft.NET\Framework64\v1.1.4322 C:\Windows\Microsoft.NET\Framework\v1.1.4322 cd C:\Windows\Microsoft.NET\Framework64\v1.1.4322 aspnet_regiis -i cd C:\Windows\Microsoft.NET\Framework64\v2.0.50727 aspnet_regiis -i iisreset  此時到 『IIS 管理員』 就可以在集區新增 ASP.NET 1.1的集區,如果建立應用程式仍然有錯誤,要檢查 IIS的 『ISAPI篩選器』,是否有『ASP.Net_2.0_for_V1.1』,若沒有則新增,值為 %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll