顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2022-08-11

Azure AD SSO in ASP.NET (使用OWIN)

大多公司是採用微軟企業方案,可以由Azure Portal管理Office、Outlook、群組(Group)等權限和功能。維護舊專案(.NET Framework 4.7.2)時,想加上SSO(Single sign-on)在網頁上,可是網路上大多是寫給.NET Core的教學,雖然官方也有提供.NET Framework的教學,但新增專案時選擇Azure驗證可以得到比較漂亮的寫法,故特此筆記。

一、新增OWIN中介軟體Nuget套件

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

二、新增Startup.cs

與ASP.NET Core類似,在Startup.cs設定中介軟體的操作,在專案新增「OWIN啟動類別」,命名為"Startup.cs"。

2022-05-06

[SendGrid]寄出"待處理"的email

最近寫了一支排程監控程式:每分鐘執行一次,會先透過WinSCP撈取FTP上的回覆檔,檢查是否有失敗訊息,並整理成清單透過SendGrid,寄到自己信箱。

開發過程蠻順利的(因為網路上都有很多範例程式),只花了1天的下班後空檔就搞定啦,所以剩下時間都在玩耍優化🤣

從現代人(我)的user story來看mail的頻率和習慣沒有以前那樣頻繁和依賴,想讓Outlook提醒我要處理,而目前隨手可得的工具就是Task;而要把信件當作待辦,需要的就是旗幟(flag)裡的"待處理"分類。(後記:另外發現排程、log、always-on都是蠻有趣的課題 另外找時間研究)

搜尋關鍵字「outlook flag」、「flag follow up」都查不太到,但確認了一件事,這個flag其實就是header的一種。於是便想說自己try try看一般mail和有flag的mail差在哪裡。參照https://www.howtogeek.com/442317/how-to-read-message-headers-in-outlook可以找到我們收到的mail的屬性內容,我試著寄給自己兩封信,一封有flag,一封沒有。


2021-11-27

[C#]SHA1Managed小發現

最近為了驗證一支公司的小程式,研究了一番SHA1加密,以及System.Security.Cryptography提供的SHA1Managed()和底下的方法。

在還不了解原理前程式是這樣寫的:

byte[] buff = hexToByte(hex);

SHA1Managed sha1 = new SHA1Managed();
byte[] value = sha1.ComputeHash(buff);

string Code = "";
foreach (var hash in value)
{
    Code += hash.ToString("X2");
}
Console.WriteLine(Code);

抱歉我跳過一個步驟,就是程式最一開始還有一個function是將hex code轉成byte,所以我們才能使用ComputeHash()。當然,hex也是陣列,是由0~F的組合。

而value你會得到一個長度為20的byte陣列。

2020-12-08

C# Essential Training: 1 Syntax and Object Oriented Programming(二)

7. constants and enumerators

> const double pi = Math.PI; // PI欄位是double型別

> pi // 3.1415926535897931

但找了找Math類別的PI欄位的定義:

public const double PI = 3.14159265358979323846;

試了一試:

> Math.PI // 3.1415926535897931

> Math.PI == 3.14159265358979323846 // true

> 3.1415926535897931 == 3.14159265358979323846 // true

> string.Format($"{3.14159265358979323846}") // "3.14159265358979"

docs的定義是3.1415926535897931(16位)

執行Console得到的字串是3.14159265358979(14位),


繼承: Object ➡ ValueType ➡ Enum


(未完待續...)

C# Essential Training: 1 Syntax and Object Oriented Programming(一)

打開檢視 > 其他視窗 > C#互動,可以不用編譯直接顯示程式碼結果。

1. 數字類型型別極限值

> int.MaxValue // 2147483647

> int.MinValue // -2147483648

> double.MaxValue // 1.7976931348623157E+308

> double.MinValue // -1.7976931348623157E+308

> decimal.MaxValue // 79228162514264337593543950335

> decimal.MinValue // -79228162514264337593543950335


2. stirng.Trim、string.Substring、string.Length 方法

> string text = "  abcde  ";

> text.Length // 9。前後各有兩格空格。

> text.Trim() // "abcde"。刪掉前後空格。另有TrimStart、TrimEnd。

> text.Trim().Length // 5