在 ASP NET 5 Core Web 應用程式中的 C# .NET Core 中,我們有一個自定義例外過濾器:
public class CustomExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
...
這是添加到基本控制器:
[TypeFilter(typeof(CustomExceptionFilter))]
public class MyBaseController : Controller
{
在使用用戶登錄名的控制器中,我們從 SQL 表中讀取一些用戶屬性并將一些關鍵屬性設定為會話資料 - 現在最重要的是他/她是否是“Web 開發人員”。當發生例外時,例外過濾器會捕獲該例外,但是如果用戶具有此角色,則顯示的錯誤訊息必須非常不同(詳細)。
我的問題是:如何從例外過濾器訪問會話實體,或者更好:如何將此布林值設定(傳遞)到例外過濾器?
提前感謝您的建議!
uj5u.com熱心網友回復:
共享資訊的關鍵是訪問OnExceptions的ExceptionContext引數并在會話中鉆取您的專案。
那是context。HttpContext. ItemswhereHttpContext是型別HttpContext并且Items是IDictionary<object, object>.
當然,在拋出例外之前,需要將會話引數保存到會話中。您可以采用一種對您有吸引力或不吸引人的不同方式來實作:捕獲例外并在其位置拋出一個自定義例外,該例外具有一個boolean屬性來保存您的值。然后您可以通過context. Exception轉換為您的自定義例外型別后。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/346610.html
下一篇:設計模型無法保存到資料庫中
