我有一个项目用.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。 –