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

ASP.NET Core MVC如何读取RouteData 替换旧版HttpContext.Current写法

ASP.NET Core 读取 RouteData 迁移方案

ASP.NET Core 已经移除了原ASP.NET MVC中的HttpContext.Current静态属性,需要通过依赖注入的方式获取当前请求上下文,对应改造步骤如下:

1. 注册HttpContext访问服务

在项目的服务注册逻辑中添加IHttpContextAccessor的注册,.NET 6+ 直接在Program.cs中添加即可:

builder.Services.AddHttpContextAccessor();

如果是.NET 5及更早版本,在Startup.cs的ConfigureServices方法中添加:

services.AddHttpContextAccessor();

2. 改造自定义Utilities类

通过构造函数注入IHttpContextAccessor来获取当前HttpContext,进而读取RouteData:

using Microsoft.AspNetCore.Routing; // 需要引入该命名空间使用GetRouteData扩展方法

public class Utilities
{
    private readonly string _urlWord;
    
    public Utilities(IHttpContextAccessor httpContextAccessor)
    {
        var httpContext = httpContextAccessor.HttpContext;
        // 非请求场景下HttpContext会为null,需做空值判断避免空引用异常
        if (httpContext != null)
        {
            _urlWord = Convert.ToString(httpContext.GetRouteData().Values["url"]);
        }
        else
        {
            // 可根据业务需求配置非请求场景下的默认值
            _urlWord = string.Empty;
        }
    }
}

补充场景:Controller/ RazorPage 内直接读取

如果是在控制器或者Razor页面内部读取RouteData,不需要额外注入IHttpContextAccessor,框架已经封装了对应属性可以直接调用:

// 控制器内部直接使用
var urlValue = RouteData.Values["url"]?.ToString();

内容的提问来源于stack exchange,提问作者Unknown Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:45:01