ASP.NET Web API:如何在MVC控制器中读取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
相关产品推荐
相关产品推荐

