ASP.NET Core 2.2 无法从自定义中间件调用Razor页面。
创始人
2024-09-14 16:30:45
0

在ASP.NET Core 2.2中,无法直接从自定义中间件中调用Razor页面。这是因为Razor页面需要经过MVC或Razor Pages身份验证、路由和处理流程。

要解决这个问题,可以使用IHttpContextAccessor来访问当前HTTP上下文,并使用IUrlHelperFactoryIActionContextAccessor生成URL和ActionContext。

下面是一个示例:

首先,确保在Startup.csConfigureServices方法中添加以下服务:

services.AddSingleton();
services.AddScoped();
services.AddScoped();
services.AddScoped(x => x.GetRequiredService().GetUrlHelper(x.GetRequiredService().ActionContext));

然后,创建一个名为RazorPageMiddleware.cs的自定义中间件:

public class RazorPageMiddleware
{
    private readonly RequestDelegate _next;
    private readonly IUrlHelper _urlHelper;

    public RazorPageMiddleware(RequestDelegate next, IUrlHelper urlHelper)
    {
        _next = next;
        _urlHelper = urlHelper;
    }

    public async Task Invoke(HttpContext context)
    {
        // 调用Razor页面
        var result = await _urlHelper.ActionAsync("Index", "Home");

        // 处理中间件逻辑

        await _next(context);
    }
}

最后,在Startup.csConfigure方法中使用自定义中间件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // 其他中间件

    app.UseMiddleware();

    // 其他中间件
}

这样,你就可以在自定义中间件中调用Razor页面了。请注意,"Index""Home"是示例中的控制器和动作名称,你需要根据实际情况进行修改。

相关内容

热门资讯

最新技巧!wepoke ai辅... 最新技巧!wepoke ai辅助,微信小程序雀神挂件,阿拉斗牌有辅助软件吗(有挂插件)1、阿拉斗牌有...
研究成果!wepoke软件透明... 研究成果!wepoke软件透明挂是真的,广东雀神麻雀辅助怎么拿,乐友麻将有挂的吗(有挂揭秘);乐友麻...
一分钟揭秘!微扑克有保险,广东... 一分钟揭秘!微扑克有保险,广东雀神小程序老是输,潮汕馆辅助器(有挂详情)1、每一步都需要思考,不同水...
总算了解!扑克时间假假,微信雀... 总算了解!扑克时间假假,微信雀神麻将软挂神器,聚星扑克这个平台(有挂技巧)聚星扑克这个平台辅助器中分...
今日科普!wpk辅助器下载方式... 今日科普!wpk辅助器下载方式,雀神小程序输赢规律,福建天天十三水有外 挂吗(有挂解说)福建天天十三...
来一盘!aapoker发牌规律... 来一盘!aapoker发牌规律,雀神麻将辅牌器怎么下载,小甘麻将怎么设置才能赢(有挂方法)小甘麻将怎...
重大通报!微扑克wpk安全,微... 重大通报!微扑克wpk安全,微信小程序雀神挂件,钱塘十三水如何调整输赢(有挂黑科技)1、玩家可以在钱...
最新研发!微扑克发牌机制,微信... 最新研发!微扑克发牌机制,微信雀神小程序辅助,中至上饶麻将有挂的吗(有挂详情);1、很好的工具软件,...
我来教教大家!wepower有... 我来教教大家!wepower有外挂,雀神麻将系统规律,中至赣牌圈辅助器(有挂技巧);运中至赣牌圈辅助...
大家学习交流!微扑克全自动机器... 大家学习交流!微扑克全自动机器人,微信小程序雀神麻雀为什么老是输,传送屋有挂吗(有挂规律)1、传送屋...