首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在controllerContext外部渲染视图

在controllerContext外部渲染视图
EN

Stack Overflow用户
提问于 2017-04-20 17:02:36
回答 1查看 283关注 0票数 1

我有一个用.net核心mvc6写的项目。我有一个"HideExeptionsMiddleware",它的目标是捕捉抛出的异常,这些异常没有在控制器中处理,作为最后的手段,并将用户重定向到错误页面。中间件还记录exeptions,并为错误生成唯一的ID。我的目标是将该ID和其他"ViewBag“变量一起传递给Error.chtml文件,而不重定向响应!

我想要的解决方案是将.chtml文件呈现为一个字符串,并从中间件使用Response.WriteAsync。

我知道这是一个以前被问过的问题,但常见的解决方案是使用RazorEngine (https://antaris.github.io/RazorEngine/),但它看起来不活跃,并且在线示例/文档是一个更老的版本,我无法使其工作。

很难相信没有一个简单的解决方案,像传递一个路径到chtml文件,和model+viewbag一起,然后拿回一个字符串。

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-04-21 00:16:49

已经有一个由ASP.NET核心提供的中间件来处理这种情况。可以在您的IApplicationBuilder实例上使用UseStatusCodePagesWithReExecute扩展来访问它。

其思想是使用专门用于错误处理的路由来配置此中间件,该路由将返回配置的错误视图和技术信息。

在Startup的Configure方法中:

代码语言:javascript
复制
...
app.UseStatusCodePagesWithReExecute("/error/{0}");
...

然后定义一个ErrorController:

代码语言:javascript
复制
[Route("error")]
public class ErrorController : Controller
{
   [HttpGet("{status?}")]
   public IActionResult Index(int? status = null)
   {
        ViewBag.RequestId = HttpContext.TraceIdentifier;
        return this.View();
   }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43514908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档