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

如何在ASP.NET Core的静态类中访问Cookies并实现等效代码

ASP.NET Core 静态类访问Cookies实现方案

ASP.NET Core 废弃了原ASP.NET中 System.Web.HttpContext.Current 静态访问Http上下文的设计,要在静态类中操作Cookie,需要通过IHttpContextAccessor服务实现,具体步骤如下:

步骤1:注册IHttpContextAccessor服务

在项目的Program.cs文件中添加服务注册:

builder.Services.AddHttpContextAccessor();

步骤2:编写等价逻辑的静态类

using Microsoft.AspNetCore.Http;
using System.Globalization;
using System.Reflection;
using System.Resources;

public static class ResourceHelper
{
    // 静态存储IHttpContextAccessor实例
    public static IHttpContextAccessor HttpContextAccessor { get; set; }

    public static string GetString(string key)
    {
        var context = HttpContextAccessor.HttpContext;
        // 非请求上下文场景直接返回默认语言资源
        if (context == null)
        {
            return LoadResource(key, "Fa");
        }

        // 读取Language Cookie
        if (!context.Request.Cookies.TryGetValue("Language", out var langValue) || string.IsNullOrWhiteSpace(langValue))
        {
            langValue = "Fa";
            // 写入默认Cookie到响应
            context.Response.Cookies.Append("Language", langValue, new CookieOptions
            {
                Expires = DateTimeOffset.Now.AddYears(1),
                // 可按需添加HttpOnly、Secure、Path等属性
            });
        }

        return LoadResource(key, langValue);
    }

    // 封装资源文件读取逻辑
    private static string LoadResource(string key, string langCode)
    {
        ResourceManager rm = new ResourceManager($"Ippv.Virtual.Application.Properties.{langCode}",
            Assembly.GetExecutingAssembly());
        return rm.GetString(key, CultureInfo.InvariantCulture);
    }
}

步骤3:给静态类注入IHttpContextAccessor实例

在Program.cs完成服务构建后,添加赋值逻辑:

ResourceHelper.HttpContextAccessor = app.Services.GetRequiredService<IHttpContextAccessor>();

注意事项

  • 只有在请求处理流程中调用该静态方法才能拿到有效的Http上下文,后台非请求场景下会自动返回默认波斯语资源,和原有逻辑兼容
  • Cookie的配置项可根据业务安全需求调整,比如开启HttpOnly防止XSS攻击窃取Cookie
  • 如果项目有整体多语言需求,也可以直接使用ASP.NET Core自带的本地化中间件,无需手动维护Cookie读取逻辑

内容的提问来源于stack exchange,提问作者Ami Bidar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 13:00:01