【发布时间】:2016-04-27 20:07:06
【问题描述】:
我正在将 Web 表单应用程序转换为 asp.net core mvc。在我的 Web 表单应用程序中,有时在我设置了一些响应 cookie 之后,其他代码需要查看它们是否已设置,如果是,请访问 cookie 的属性(即值、过期、安全、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,然后立即尝试访问它们。但是智能感知没有显示任何允许我访问它们的方法、属性或索引器:
有一瞬间,我想也许我可以使用Response.Cookies.ToString(); 并解析信息以找到我的cookie 信息,但是,ToString() 调用返回“Microsoft.AspNet.Http.Internal.ResponseCookies”,因为对象不会覆盖默认实现。
只是为了好玩,我还检查了 GitHub 的当前 dev 分支,看看接口自 RC1 以来是否发生了变化,但实际上没有。那么给定这个接口,我如何检查响应cookie的存在并获取它的属性?我曾考虑尝试通过响应标头集合进行入侵,但这似乎很蹩脚。
【问题讨论】:
-
你有没有在你的action方法中尝试过
Response.Cookies? -
我会。我将更新问题以表明这一点。
-
哦,对不起。我的意思是
Request.Cookies,我的错! -
@Will 不用担心。根据您的建议,我尝试将 cookie 添加到响应 cookie,然后检查请求 cookie 以查看是否可以通过这种方式访问 cookie。虽然请求 cookie 对象确实提供了一种读取其 cookie 的方法,但事实证明,将 cookie 添加到响应 cookie 不会 像在 asp 中那样将 cookie 添加到引擎盖下的请求 cookie。净 4.x。所以这种方法也不起作用。
标签: asp.net-core-mvc