我正在使用.net core 2.0和angular 4的角度Spa模板。
页面刷新后,我的cookie数量为零。事实上,在刷新页面后,我在HttpContext中没有得到任何东西。
如果我使用角度系统菜单,它工作正常。
现在,这是我在后端获取cookie的代码。
private string GetCookie(HttpContext httpContext, string cookieName)
{
var rqstCookie = httpContext.Request.Cookies[cookieName];
return !string.IsNullOrEmpty(rqstCookie) ? rqstCookie : null;
}
一个重要的事情是,当我点击菜单时,它会加载组件和服务文件,然后它向C#controller请求所有标题和选项。但是当我刷新页面时,整个过程都会被跳过,所以我认为这些选项不会传递到后端,这就是为什么我的cookie是空的。
在我的其他应用程序中,我已经使用url重写同样的问题,它在那里工作,但在这里,因为这个应用程序是角度spa模板,url重写不起作用。
我也尝试设置url重写,就像我在旧应用程序中所做的那样,但它给了我错误。这是我遵循的url重写模块的链接。 https://stackoverflow.com/a/26152011/5816119
我已将Cookie更新为Session Cookie,但它也无效。
你能指导我如何获取所有的cookie和其他数据,即使用户刷新页面。谢谢...
这是一个有棱角的问题。
当我在路由模块中添加APP_BASE_HREF
时,它突然开始工作了。
https://stackoverflow.com/a/34535256/5816119
这是我的代码,
import { APP_BASE_HREF } from "@angular/common";
export const sharedConfig: NgModule = {
bootstrap: [ AppComponent ],
declarations: [
AppComponent,
...
],
imports: [
HttpModule,
...,
RouterModule.forRoot([
{ path: "", redirectTo: "home", pathMatch: "full" },
{ path: "**", redirectTo: "home" }
], { useHash: true }),
],
providers: [
{ provide: APP_BASE_HREF, useValue: '/' },
],
};
所以,它基本上是路由器端的哈希技术,似乎我在我的应用程序中也缺少这个提供程序。
尝试在编写cookie时使用此代码指定cookie何时到期
option.Expires = DateTime.Now.AddDays(x);
Response.Cookies.Append(cookiename, cookievalue, option);
你可以将AddDays(x)
修改为你想要的天数