顯示具有 WebAPI 標籤的文章。 顯示所有文章
顯示具有 WebAPI 標籤的文章。 顯示所有文章

2024/10/24

[ASP.NET MVC] 解決在 WebAPI 讀取不到 Session 值的問題

markdown ### 環境 - ASP.NET MVC 5 - .NET Framework 4.7.2+ ### 問題 原本有個設定值以 Cookie 為存取來源, 但因應安全理由改寫成 Session 來存取, 卻在 WebAPI 存取時發生讀取不到 Session 的內容。 在 ASP.NET Core MVC 反而簡單, 只要 `services.AddSession()` 跟 `app.UseSession()` 即搞定。 目前還是有許多不是 .NET Core 的專案,記錄一下以供未來翻查用。 ### 解決方法 修改 `Global.asax.cs` 檔案 ```cs protected void Application_PostAuthorizeRequest() { // WebApi SessionState bool isWebApiRequest = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith("~/api"); if (isWebApiRequest) HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); } ``` ### 參考資料 - [Accessing Session Using ASP.NET Web API](https://stackoverflow.com/questions/9594229/accessing-session-using-asp-net-web-api)

2024/06/18

[C#][WebAPI] Json.NET / System.Text.Json 序列化物件中忽略 null 值的屬性

markdown 近期遊走在 ASP.NET MVC 5 / Web API 2 以及 ASP.NET Core MVC (.NET) 的專案中 對於由 API 讀取進來的物件在 .NET Framework 與 .NET 下處理的方式不同, 需要記錄一下以便日後翻查

場景需求

使用場景是把接收進來的物件內容轉換做一個清洗,只要從 Web API 接進來的物件屬性值為 null 的都不保留 例如: 有一個 Log 物件如下 ```C# var log = new Log { Timestamp = "2024-06-16T09:22:01.5120098Z", Level = "Information", Message = "This is test message", Exception = null }; ``` 那麼經過清洗過後的字串內容就不會包含 Exception 空值的屬性 ```Json { "Timestamp":"2024-06-16T09:22:01.5120098Z", "Level":"Information", "Message":"This is test message" } ``` 以下即是在 ASP.NET MVC 5 及 ASP.NET Core 不同環境的處理方式

2019/03/14

[.NET] 用 Ical.Net 建立 iCalendar ics 日曆數據交換檔案

markdown 今天在專案中要產生 *.ics 的日曆數據交換檔案提供下載 打鐵趁熱記錄一下,以免又要石沈大海 目前採用的是在 NuGet 的 [Ical.Net](https://www.nuget.org/packages/Ical.Net/) 套件, 版本 v4.1.10 建立 CalendarEvent 超簡單
*.ics 內容如下
在 Windows 10 的行事曆開啟 *.ics 的呈現內容
### 範例程式 (採用 Web API)
### 參考資料 - [WiKi - iCalendar](https://zh.wikipedia.org/wiki/ICalendar) - [NuGet - Ical.Net](https://www.nuget.org/packages/Ical.Net/) - [Ical.Net Wiki](https://github.com/rianjs/ical.net/wiki)