如何使用 c#.net 读取另一个控制器中的 cookie?

How do I read a cookie in another Controller using c#.net?

我已经从另一个控制器创建了 cookie,我可以在浏览器中看到它,现在我正在尝试在我的项目中的另一个控制器中读取 Cookie,但是 [=21= 中的 Cookies 这个词]["MyCookie"]; 带有红色下划线,错误提示:

Error 5: 'System.Net.Http.HttpRequestMessage' does not contain a definition for 'Cookies' and no extension method 'Cookies' accepting a first argument of type 'System.Net.Http.HttpRequestMessage' could be found (are you missing a using directive or an assembly reference?)

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Security;
using System.Net.Http;
using System.Web.Http;

namespace Project.Controllers
{
    public class UserController : ApiController
    {

        public String getCookie()
        {
            HttpCookie cookie = Request.Cookies["MyCookie"];
            string username;

            if(  cookie != null)
            {
                username = Request.Cookies["MyCookie"].Value;
            }

            return username;
        }

我对 C# .Net 还是个新手,我根本不知道如何解决这个问题。我使用的是 Visual Studio 2013。有人能帮帮我吗?

System.Net.Http.HttpRequestMessage 对象不包含 cookie 对象。要在 WebAPI 控制器中访问 c​​ookie,您需要像这样查看 Request.Headers 对象:

CookieHeaderValue clientCookie = 
        Request.Headers.GetCookies("MyCookie").SingleOrDefault();
string username = clientCookie["MyCookie"].Value;

试试这个

string username="";
var cookie = Request.Headers.GetCookies("MyCookie").SingleOrDefault();

if (cookie != null)
{
    username = cookie["MyCookie"].Value;
}