我正在将Web窗体应用程序转换为asp.net核心mvc。在我的Web窗体应用程序中,有时在设置一些响应cookie之后,其他代码需要查看是否已设置它们,如果是,则访问cookie的属性(即,值,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的存在并获取其属性?我曾考虑过尝试通过响应标头集合进行入侵,但这似乎很la脚。
这是我value
从响应中获取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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句