asp.net-core-mvc – 如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

前端之家收集整理的这篇文章主要介绍了asp.net-core-mvc – 如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将一个Web表单应用程序转换为asp.net core mvc.在我的Web表单应用程序中,有时在我设置一些响应cookie后,其他代码需要查看它们是否已设置,如果是,请访问cookie的属性(即value,Expires,Secure,http).在webforms和MVC 5中,可以迭代cookie并返回任何特定的cookie,如此(我知道的老学校)
for(int i = 0; i < cookies.Count; i++) {
            if(cookies[i].Name == cookieName) {
                return cookies[i];
            }
        }

但是在asp.net core mvc中访问响应cookie的界面如下所示:

基于此接口,我没有看到检查响应cookie是否存在并获取属性方法.但是还有一些方法可以做到吗?

在一个动作方法中,我尝试在响应对象上设置两个cookie,然后立即尝试访问它们.但intellisense没有显示允许我访问它们的任何方法,属性或索引器:

有一会儿,我想也许我可以使用Response.Cookies.ToString();并且只是解析信息以找到我的cookie信息,但是,ToString()调用返回“Microsoft.AspNet.Http.Internal.ResponseCookies”,因为该对象不会覆盖默认实现.

只是为了好玩,我还检查了GitHub的当前dev分支,看看自RC1以来接口是否已经改变,但它没有.所以给定这个接口,我如何检查响应cookie的存在并获取它的属性?我曾经考虑过通过响应头集合进行攻击,但这看起来很蹩脚.

解决方法

这是我如何从Response中获取cookie的值.如果需要,这样的东西可用于获取整个cookie:
string GetCookieValueFromResponse(HttpResponse response,string cookieName)
{
  foreach (var headers in response.Headers.Values)
    foreach (var header in headers)
      if (header.StartsWith($"{cookieName}="))
      {
        var p1 = header.IndexOf('=');
        var p2 = header.IndexOf(';');
        return header.Substring(p1 + 1,p2 - p1 - 1);
      }
  return null;
}

猜你在找的.NET Core相关文章