You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中用户访问login.aspx路径时如何重定向到登录页

.NET Core 迁移场景下旧路径login.aspx跳转到新登录页实现

直接在请求管道里加路径判断逻辑即可,以下是两个生产环境常用的实现方案,按需选择:

  • 方案1:轻量中间件实现(单路径跳转首选,无额外依赖)
    打开项目中的Program.cs,在app.UseRouting()之后、路由映射配置(app.MapRazorPages()/app.MapControllerRoute())之前插入如下代码:

    app.Use(async (context, next) =>
    {
        // 忽略大小写匹配旧的login.aspx请求路径
        if (context.Request.Path.Equals("/login.aspx", StringComparison.OrdinalIgnoreCase))
        {
            // 第二个参数传true为301永久重定向,需要临时跳转改成false即可
            // 你已经把login.cshtml设为默认页,直接跳根路径/就会命中登录页
            context.Response.Redirect("/", permanent: true);
            return;
        }
        await next();
    });
    

    该写法会自动保留原请求的查询参数,比如旧地址login.aspx?returnUrl=/home会自动跳转到/?returnUrl=/home,不需要单独处理登录回跳参数。

  • 方案2:URL重写规则实现(适合后续有批量aspx路径迁移需求的场景)
    如果后续还有多个旧Web Forms的aspx路径需要做跳转,用框架自带的重写模块统一管理维护成本更低:

    1. 先在服务注册段添加重写服务:
      builder.Services.AddRewriter();
      
    2. 在请求管道的app.UseRouting()之前添加重定向规则:
      var rewriteOptions = new RewriteOptions()
          .AddRedirect("(?i)login.aspx", "/", StatusCodes.Status301MovedPermanently);
      app.UseRewriter(rewriteOptions);
      
      规则里的(?i)是正则忽略大小写的写法,可以匹配用户输入的Login.aspx、LOGIN.ASPX等各种大小写变体。

避坑提醒:不要直接把跳转目标写成/login.cshtml,.NET Core默认禁止直接访问cshtml物理文件,会直接返回404,必须跳转到对应的路由路径。你已经把登录页设为应用默认页的前提下,跳站点根路径/是最稳妥的,不会因为后续路由规则调整导致跳转失效。

内容的提问来源于stack exchange,提问作者Sandeep Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:09:21