Estoy usando una plantilla Spa angular con .net core 2.0 y angular 4.

Recibo un recuento cero de cookies después de actualizar la página. y, de hecho, no obtengo nada en HttpContext después de que la página se actualiza.

Aquí está mi cookie en el navegador. ingrese la descripción de la imagen aquí

Está funcionando bien si uso el menú del sistema angular.

Ahora, aquí está mi código para obtener cookies en el back-end.

    private string GetCookie(HttpContext httpContext, string cookieName)
    {
        var rqstCookie = httpContext.Request.Cookies[cookieName];

        return !string.IsNullOrEmpty(rqstCookie) ? rqstCookie : null;
    }

una cosa importante es que cuando hago clic en el menú, carga los archivos de componentes y servicios y luego solicita al controlador C # con todos los encabezados y opciones. pero cuando actualizo la página se omite todo este proceso, así que creo que estas opciones no se entregan al back-end y por eso mis cookies están vacías.

En mis otras aplicaciones, he usado la reescritura de URL para el mismo tipo de problemas y funcionó allí, pero aquí, debido a que esta aplicación es una plantilla de spa angular, la reescritura de URL no funciona.

También intenté configurar la reescritura de la URL, de la misma manera que lo hice en mis aplicaciones anteriores, pero me da un error. aquí está el enlace del módulo de reescritura de URL que seguí. https://stackoverflow.com/a/26152011/5816119

He actualizado las cookies a la cookie de sesión, pero tampoco funciona.

¿Puede guiarme sobre cómo obtener todas las cookies y otros datos incluso cuando el usuario actualiza la página? Gracias...

6
Bharat 19 feb. 2018 a las 11:10

2 respuestas

La mejor respuesta

Fue un problema lateral angular.

Cuando agregué APP_BASE_HREF en mi módulo de enrutamiento, de repente comenzó a funcionar.

https://stackoverflow.com/a/34535256/5816119

Aquí está mi código,

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: '/' },
    ],
};

Entonces, es básicamente una tecnología de hash en el lado del enrutador, y parece que también me faltaba este proveedor en mi aplicación.

5
Bharat 28 feb. 2018 a las 06:12

Intente especificar cuándo caducará la cookie utilizando este código al escribir la cookie

 option.Expires = DateTime.Now.AddDays(x);

 Response.Cookies.Append(cookiename, cookievalue, option);

Puede modificar AddDays(x) a la cantidad de días que desee

3
Mohamad Elnaqeeb 25 feb. 2018 a las 09:25