發表文章

.Net Core 在類別庫共用Page及Controller

圖片
前言 今天試著將寫好的API 及Razor Page移到共用的類別庫,讓其他專案可以使用,本以為建好一個類別庫後,搬過去就OK,但代誌沒那麼簡單....花了一些功夫才搞定。 使用方式-Controller 1.類別庫的專案檔,加入Framework參考。   <ItemGroup>     <FrameworkReference Include="Microsoft.AspNetCore.App" />   </ItemGroup> 2.Web專案,引用類別載的API Controller builder.Services.AddControllers()     .AddApplicationPart(typeof(WebApplication2.WebAPI.Controllers.KimController).Assembly); 使用方式-Razor Page 1.類別庫的專案檔: Project Sdk="Microsoft.NET.Sdk. Razor " <AddRazorSupportForMvc> <Project Sdk="Microsoft.NET.Sdk.Razor">   <PropertyGroup>     <TargetFramework>net6.0</TargetFramework>     <AddRazorSupportForMvc>true</AddRazorSupportForMvc>   </PropertyGroup>   <ItemGroup>     <FrameworkReference Include="Microsoft.AspNetCore.App" />   </ItemGroup> </Project> 其它參考 https://curia.me/how-to-use-a-controller-from-another-assembly-in-asp-net-core/ https://github.com/dotnet/AspN

TypeScript Async相容測試

圖片
前言    前幾天與同事在測試某段javascript時,看到 async關鍵字,心想怎麼前端會有這種東東,可以執行非同步....,Google一下後,才知道在ECMA 2017就開始支援了..。 目前的專案使用的是TypeScript+ECMA 5.0,不敢冒然升級ECMA 6+ ~ 2021,因為有年代久遠的裝置,要考慮其相容性。   在不想升級ECMA,又想使用async 等ECMA新功能,該怎麼辨? 別擔心! 舞照跳、酒照喝XD,TypeScript的編譯器會幫你搞定一切,接下來的測試,會說明。 測試 TypeScript - 原始版本 :程式碼會往後端呼叫3次,等每次呼叫完,才會執行下一個     Lab() {             console.log("Lab-Start");             this.AllFunctionsService.GetFunctions((response) => {                 console.log("  Lab-GetFunctions 1");                 this.AllFunctionsService.GetFunctions((response) => {                     console.log("  Lab-GetFunctions 2");                     this.AllFunctionsService.GetFunctions((response) => {                         console.log("  Lab-GetFunctions 3");                         console.log("Lab-End");                     });                 });             });                 } 執行結果 TypeScript - async版本  : await了3次的GetFunction,最後才執行到End,結果同上圖。

SAP - 建立登入捷徑

圖片
前言 SAP GUI 登入時,每次都要輸入,用戶端、使用者、語系等..,有點繁瑣。想要省點功夫的話,可以透過建立捷徑的方式,在每次登入時,自動先帶出相關資訊,來加速登入。 解決方式 1.先點選"連線",針對此連線建立捷徑。 2.輸入登入資訊 3.測試登入,點2下開啟登入視窗,只需輸入密碼即可。 同場加映-使用命令列方式登入 以下修改成自己的密碼,另存成bat,就可以點兩下立刻登入。 C: cd C:\Program Files (x86)\SAP\FrontEnd\SAPgui sapshcut -type=Transaction -system=DS4 -client=110 -user=IT007 -pw=xxxx -language=ZF -command –maxgui4 其它參考 https://noahchou.wordpress.com/2011/08/23/%E5%BF%AB%E9%80%9F%E7%99%BB%E5%85%A5sap-gui-%E7%9A%84%E6%96%B9%E6%B3%95/

Window11-硬碟使用率100%

圖片
前言 早上一開機,電腦卡卡的,心想...我不是才剛將RAM加大嗎? 怎麼會....! 查看工作管理員後,手兇手是CompatTelRunner.exe ,大量的讀取資料。 解決方式 停用CompatTelRunner.exe。 Q:停用它會有問題嗎? A:它是用來診斷系統及運行OS升級兼容性檢查,我的筆電去年剛買,應該不需要。 執行步驟 按Windows + R,輸入 taskschd.msc Task Scheduler Library> Microsoft> Windows> Application Experience 停用Microsoft Compatibility Appraiser 其它參考 https://infoacetech.net/windows/compattelrunner%E9%AB%98%E7%A3%81%E7%9B%A4%E4%BD%BF%E7%94%A8%E7%8E%87/

IIS SSL憑證匯出成Linux支援的檔案

圖片
前言 Window主機上的SSL憑證是透過certify the web跟ZeroSSL申請同一網域通用的Wirdcard,現有需求需將該憑證匯出給另一台Linux主機用。 解決方式 1.在IIS先將憑證出來,匯出後為.pfx檔案,匯出時需設一組密碼。 2.初次使用OpenSSL,先將路徑設定環境變數。本文使用的是git內建的OpenSSL,C:\Program Files\Git\usr\bin\openssl.exe 3.使用OpenSSL將.pfx的 憑證檔案 匯出 openssl pkcs12 -in server.pfx -nokeys -out server-crt.pem -password "pass:1234" -nodes 4.使用OpenSSL將.pfx的 加密金鑰檔案 匯出 openssl pkcs12 -in server.pfx -nocerts -out private.pem -password "pass:1234" -nodes 5.使用OpenSSL將 加密金鑰檔案 匯出成 已解密 的金鑰檔案 openssl rsa -in "private.pem" -out "PrivateKey.key" 參數 -nokeys  私密金鑰檔 (僅輸出憑證檔案) -nocerts 伺服器憑證檔 (僅輸出金鑰檔案) -nodes  輸出一個沒有密碼保護的私密金鑰檔 -password:"pass: .pfx匯出時的密碼 " 完成後,只需要server-crt.pem及PrivateKey.key,就可以在Liunx上匯入。 其它/參考 https://blog.miniasp.com/post/2019/02/25/Creating-Self-signed-Certificate-using-OpenSSL https://justhodl.blogspot.com/2018/04/tls-ssl-crt-key-to-pem-openssl.html https://wangprince.idv.tw/tech/733 * https://www.mysysadmintips.com/windows/servers/62-export-

Windows 11 - Snagit 2019無法擷圖

圖片
前兩天升上Windows 11後,Snagit 2019無法使用,一按擷圖,應用程式就會Crash。事件檢視器的訊息如下。 解決方式 在官方論壇,找到了解法。將Snagit應用程式,強制使用Nvidia Processor。 其它參考 https://support.techsmith.com/hc/en-us/community/posts/360071673271-Snagit-Editor-2019-Hanging-Crashing-FIX-

關於IIS 503錯誤處理

圖片
前言 工作需求換了台新筆電後,將舊筆電的IIS設定匯進來,執行後出現503錯誤。事件檢視器訊息如下 The Module DLL C:\Windows\system32\inetsrv\aspnetcore.dll failed to load.  The data is the error. 此訊息是由於IIS的Site部份為.Net Core。本以為只要安裝好 .Net Core Hosting Bundle 就OK了,但....還是一樣會發生錯誤。 原因 此錯誤是有歷史痕跡的! 舊筆電一開始裝的是.Net Core 1.1還是2.0....忘了,其AspNetCoreModule的位置是在C:\Windows\system32\inetsrv\aspnetcore.dll。但之後的.Net Core改成AspNetCoreModuleV2,原有的已不在使用,而在我將舊筆電的IIS設定匯進來後,AspNetCoreModule的設定也匯進來到applicationHost.config了。白話說就是IIS的組態有不存在.dll的設定。 解決方式 修改組態C:\Windows\System32\inetsrv\config\applicationHost.config,將AspNetCoreModule模組移除或註解起來。 其他錯誤 在修改完後,一樣出現503錯誤,事件檢視器訊息 The Module DLL C:\Program Files\IIS\Application Request Routing\requestRouter.dll failed to load.  The data is the error. The Module DLL C:\Windows\system32\inetsrv\rewrite.dll failed to load.  The data is the error. 因為有用到Url Rewrite,此錯誤使用Web Platform將相關模組安裝好,就OK了。 其它參考 https://stackoverflow.com/questions/40161982/aspnetcore-dll-failed-to-load

AzureDevOps-還原已刪除的Git 分支

圖片
今天同事要找的相關程式碼,前陣子我以為不會再用到,就把它刪除了。試著要在本機的git下reflog,看可不可以找到分支的commit ID來還原,但...已過了期限(預設保留30天),找不到。 本機找不到,就往上找找,幸好AzureDevOps有提供還原已刪除的方式 還原方式 進入Branches,在搜尋輸入已刪除分支的 完整名稱, 找到後就可以還原回來了。 其它參考 https://docs.microsoft.com/zh-tw/azure/devops/repos/git/restore-deleted-branch?view=azure-devops https://gitbook.tw/chapters/branch/restore-deleted-but-unmerged-branch.html

使用ExeOutput for PHP發信

圖片
目前有一外包程式使用的是php開發,外包商反應我們提供的AWS Smtp資訊無法發信,但我測試使用.net C#可以正常發信。 由於不會寫php,一時間也不知如何驗證,是哪邊出錯? 為釐清是哪邊程式出錯,找了一個php範例來測試,但...不會php,也沒有安裝相關環境可以用,怎麼測? 解決方式 找到了一個軟體可以針對php程式直接編譯成執行檔。沒有安裝php,也會自動幫你下載安裝。 1. 下載連結 2.安裝後,打開應用程式,新增一個專案並選擇進入點的.php,本例為下載php email的範例程式 選擇輸出的檔案類型,本例為主控台應用程式 3.編譯程式 成功後,就會看到輸出的exe ps:.exop為ExeOutput的專案設定檔 其它參考 https://www.exeoutput.com/samples/sendmail-console-app

NSwag Studio -更新Web API文件參考

圖片
前言       寫給同事的操作文,在新增API或增修欄位時,如何更新Client端的程式碼。 How To 1.沒有安裝過NSwagStudio的話,先到此 下載安裝 。 2.Web API網站先執行起來,並打開應用程式,副檔名.nswag 3.更新參考並存檔,如下圖 4.查看xxxxClient.cs,是否已更新 其它參考 https://note.kimx.info/2020/04/nswag-studio-apiclient.html