【问题标题】:How do I read a cookie in another Controller using c#.net?如何使用 c#.net 在另一个控制器中读取 cookie?
【发布时间】:2015-03-06 20:16:04
【问题描述】:

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

错误 5:“System.Net.Http.HttpRequestMessage”不包含 'Cookies' 的定义并且没有扩展方法 'Cookies' 接受 'System.Net.Http.HttpRequestMessage' 类型的第一个参数可以是 找到(您是否缺少 using 指令或程序集引用?)

这是我的代码:

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。有人可以帮帮我吗?

【问题讨论】:

    标签: c# cookies


    【解决方案1】:

    试试这个

    string username="";
    var cookie = Request.Headers.GetCookies("MyCookie").SingleOrDefault();
    
    if (cookie != null)
    {
        username = cookie["MyCookie"].Value;
    }
    

    【讨论】:

      【解决方案2】:

      System.Net.Http.HttpRequestMessage 对象不包含 cookie 对象。要访问 WebAPI 控制器中的 cookie,您需要查看 Request.Headers 对象,如下所示:

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

      【讨论】:

      • 谢谢!这种方法也奏效了。不过,我还不能投票。我仍然缺乏一些“声誉”。
      猜你喜欢
      • 2018-12-16
      • 2011-10-15
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多