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

ASP.NET Web API:如何在MVC控制器中读取API控制器写入的Cookie

如何在ASP.NET MVC控制器中读取Web API写入的Cookie?

我来帮你搞定这个问题!先看你提供的API控制器代码,它已经创建了一个名为session的Cookie,里面存了user_id这个键值对。在MVC控制器里读取这个Cookie其实非常直接,下面是具体的实现方法和注意点:

核心实现步骤

在MVC控制器的Action里,你可以通过Request.Cookies集合来访问API写入的Cookie,具体代码示例如下:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        // 1. 获取名为"session"的Cookie对象
        var sessionCookie = Request.Cookies["session"];
        
        if (sessionCookie != null)
        {
            // 2. 读取Cookie中的"user_id"值(Cookie的值默认都是字符串类型)
            string userIdStr = sessionCookie["user_id"];
            
            // 3. 可选:将字符串转换为整数(根据业务需求处理)
            if (int.TryParse(userIdStr, out int userId))
            {
                // 这里可以把用户ID传递到视图,或者用于后续业务逻辑
                ViewBag.LoggedInUserId = userId;
            }
        }
        
        return View();
    }
}

关键细节说明

  • Cookie存在性检查:一定要先判断sessionCookie是否为null,避免空引用异常——如果用户还没访问过API接口触发Cookie写入,这个Cookie是不存在的。
  • 键值对读取:因为你的API里用NameValueCollection来存储Cookie的内容,所以MVC这边可以直接通过索引器sessionCookie["user_id"]拿到对应的值。
  • 域名与路径匹配:你的API代码里已经设置了cookie.Domain = Request.RequestUri.Host和cookie.Path = "/",只要MVC应用和Web API在同一个域名下,MVC控制器就能正常读取到这个Cookie;如果是跨域场景,还需要额外配置CORS和Cookie共享规则,但看起来你这里是同域场景,所以不用额外处理。

内容的提问来源于stack exchange,提问作者Schnee mC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:38:27