如何从 .net core 3.1

问题描述

我们有一个名为 DeveloperExceptionPageMiddleware 的中间件扩展,它返回一个 razor 视图。根据github上的源代码,它使用预编译源代码ErrorPage.cshtml返回一个ErrorPage.Designer.cs页面

我的问题: ErrorPage.Designer.cs 是如何从 ErrorPage.cshtml 生成的? 我想为我的 .cshtml 页面做同样的事情。

到目前为止我尝试过的:我查看了 RazorGenerator 但它生成的视图与我在 github 源代码中看到的视图不同。准确地说,生成文件中不存在 ExecuteAsync 方法,并且对于相同的 ErrorPage.Designer.cs,它看起来与 ErrorPage.cshtml 不同。

这不是 aspnetcore: how to return a view from middleware 的副本。我确信这个问题中提到的解决方案在被接受时是有效的,但截至今天,答案中的所有链接都已断开,并且答案中提到的 RazorGenerator 也发生了很大变化。

更新: 明确地说,我不想在中间件中覆盖或实现异常处理。我想从 Web API 返回一个用于诊断目的的 UI 页面,该页面将在我们生态系统中的所有 Web API 中使用。我看到 DeveloperExceptionPageMiddleware 是关于如何在不引用“View()”的情况下从 Web API 返回 razor 页面的灵感,并且只是想了解他们是如何做到的。这里缺少的部分是如何从 .cshtml 生成 Designer.cs,这就是我想知道的。

示例: https://{host}/deployedlibs => 提供已部署库的所有信息 https://{host}/settings => 提供 appSetting.json 的所有信息

端点受到身份验证保护,因此不必担心安全性,这些是内部 API

Implementation for DevelopmentExceptionPage: 它使用 ErrorPage.Designer.cs 返回一个 html 见https://github.com/aspnet/Diagnostics/blob/master/src/Microsoft.AspNetCore.Diagnostics/DeveloperExceptionPage/DeveloperExceptionPageMiddleware.cs#L197

var model = new ErrorPageModel
            {
                Options = _options,ErrorDetails = _exceptionDetailsProvider.GetDetails(ex),Query = request.Query,Cookies = request.Cookies,Headers = request.Headers
            };

            var errorPage = new ErrorPage(model);
            return errorPage.ExecuteAsync(context);

ErrorPage 类存在于从 ErrorPage.Designer.cs 生成ErrorPage.cshtml 中。

因此将模型传递给一个类,然后将响应写入流中。 你能告诉我如何从“x.cshtml”创建“x.Designer.cs”吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)