ASP. NET Базовое веб-приложение не может найти значение cook ie. Что мне не хватает? - PullRequest
0 голосов
/ 29 января 2020

Я создал простой веб-повар ie из моего ASP. NET веб-приложения. Я пытаюсь получить этот повар ie из отдельного. NET Базового веб-приложения. Всякий раз, когда я пытаюсь это сделать, приложение. NET Core возвращает нулевые значения для повара ie.

Так создается повар ie в приложении веб-формы ASP. NET:

 protected void btn1_Click(object sender, EventArgs e)
        {
            HttpCookie Abc = new HttpCookie("Abc");
            DateTime now = DateTime.Now;

            //Abc Set the cookie value.
            Abc.Value = txt1.Text;
            // Set the cookie expiration date.
            Abc.Expires = now.AddMinutes(1);

            // Add the cookie.
            Response.Cookies.Add(Abc);

       }

Вот как я пытаюсь прочитать это "Ab c "cook ie from. NET Базовое приложение:

public void OnGet()
        {

         if (HttpContext.Request.Cookies["Abc"] != null)
            {
                Message = "ya";
            }
            else
            {
                Message = "no";
            }
        }

Вот подробности Startup.cs для приложения ASP. NET CORE:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddDistributedMemoryCache();
          //  services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
            services.AddHttpContextAccessor();
            services.AddSession(options =>
            {
                options.Cookie.HttpOnly = true;
                // Make the session cookie essential
                options.Cookie.IsEssential = true;
            });

            services.Configure<CookiePolicyOptions>(options =>
            {
                // No consent check needed here
                options.CheckConsentNeeded = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseSession();
            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }

Я могу найти повара ie в браузере, как и ожидалось, когда я запускаю приложение ASP. NET Core:

enter image description here

Я потратил довольно много часов, исследуя это, но безуспешно. Любые идеи о том, почему я не могу прочитать повар ie из приложения. Net Core? Я очень ценю любые отзывы.

Спасибо!

1 Ответ

0 голосов
/ 29 января 2020

Если ваши веб-приложения размещены в поддоменах одного и того же домена (например, app1.example.com и app2.example.com), вы можете легко читать файлы cookie между поддоменами, установив свойство «Домен» в объект HttpCook ie для .example.com

HttpCookie Abc = new HttpCookie("Abc");
DateTime now = DateTime.Now;
Abc.Domain = ".example.com";
//Abc Set the cookie value.
Abc.Value = txt1.Text;
// Set the cookie expiration date.
Abc.Expires = now.AddMinutes(1);

// Add the cookie.
Response.Cookies.Add(Abc);
...