我有一個項目用.net Core mvc6編寫。我有一個「HideExeptionsMiddleware」,它的目標是捕獲控制器中未處理的拋出的異常,作爲最後的手段,並將用戶重定向到錯誤頁面。中間件還會記錄這些豁免,併爲錯誤生成唯一的ID。 我的目標是將該ID和其他「ViewBag」變量一起傳遞給Error.chtml文件,而無需重定向響應!在controllerContext之外的渲染視圖
我想要的解決方案是將.chtml文件呈現爲字符串,並使用中間件的Response.WriteAsync作爲 。
我知道它是被問過的問題,而是找到共同的解決辦法是 使用RazorEngine(https://antaris.github.io/RazorEngine/),但它在主動接縫和網上的例子/文檔是一個更老版本的,我不能讓這行得通。
它很難相信有一個簡單的解決方案,如傳遞一個路徑到chtml文件,以及模型+ viewbag和返回一個字符串。
我錯過了什麼嗎?
我不太確定到底是官方的錯誤處理中間件做什麼,但它提供的能力,以*重寫*請求,這意味着它不重定向。相反,它只是用另一個URL再次執行中間件堆棧。我認爲這是你可以做的事情。這會讓你更容易,因爲你可以在查詢參數中傳遞參數並讓MVC找出它們。 – juunas
更改路徑並重新調用上下文是不可能的。我收到了「頭文件已發送」的異常。但即便如此,我也不想將錯誤ID傳遞給操作。 – andrey
渲染視圖需要在您的中間件中不可用的控制器上下文。我認爲'RazorEngine'是一種可行的方式。否則,不用'Razor'來製作一個簡單的html。 –