【问题标题】:asp.net core 2.2 using HttpCookieCollection in a class libraryasp.net core 2.2 在类库中使用 HttpCookieCollection
【发布时间】:2018-12-24 17:55:27
【问题描述】:

我正在从旧的 .net “升级”到 .net core 2.2(显然升级并不容易,因为它是重写)

这个HttpCookieCollection 不再那么容易访问了。对于 .Net Core 2.2 类库,有哪些示例说明如何访问此 cookie 集合?

private static string CollectionToHtmlTable(HttpCookieCollection collection)
{
    // Converts HttpCookieCollection to NameValueCollection
    var nvc = new NameValueCollection();
    foreach (string item in collection)
    {
        var httpCookie = collection[item];
        if (httpCookie != null)
        {
            nvc.Add(item, httpCookie.Value);
        }
    }

    return CollectionToHtmlTable(nvc);
}

【问题讨论】:

  • 基本上这个HttpCookieCollection在我升级到.net核心的代码中找不到,它在一个类库中
  • 你是如何在旧的 .net 中调用 CollectionToHtmlTable 的?将您需要拨打的代码分享给我们CollectionToHtmlTable

标签: c# .net asp.net-core .net-core asp.net-core-mvc


【解决方案1】:

我相信等价的课程是IRequestCookieCollection

可以在请求实例中通过控制器中的HttpContext.Request.Cookies 访问此对象的实例。

【讨论】:

    【解决方案2】:

    您可以使用 HttpContext 访问 Cookies

    为此,您需要注入 IHttpContextAccessor。用法是:

    public class MyClass
    {
        private readonly IHttpContextAccessor _contextAccessor;
        public MyClass (IHttpContextAccessor contextAccessor)
        { 
             _contextAccessor = contextAccessor;
        }
    
        public void MyFunction()
        {
             var someCookie = _contextAccessor.HttpContext.Request.Cookies["someCookie"];
        }
    }
    

    如果你在控制器中,可以直接使用HttpContext.Request.Cookies["someCookie"]

    public class HomeController : Controller
    {
        public IActionResult About()
        {
            var someCookie = HttpContext.Request.Cookies["someCookie"];
    
            return View();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      • 2019-08-11
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多