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)