TempData не сохраняет данные на производственном сервере [ASP.NET CORE 2.1] - PullRequest
0 голосов
/ 01 октября 2018

У меня есть проблема, и я искал документы, чтобы увидеть, возможно, я допустил ошибку или что-то еще, но не нашел ответ, который искал.Моя проблема заключается в следующем: после сохранения продукта я использую шаблон PRG (Post-Redirect-Get), чтобы пользователь не повторно отправлял форму при нажатии кнопки возврата браузера.Я отображаю одноразовое сообщение, используя TempData, поскольку оно сохраняет данные для следующего запроса перед удалением.Этот метод отлично работает в моей среде разработки.Но после развертывания приложения на производственном сервере, хотя методы действия следуют шаблону PRG и успешно возвращаются, TempData не сохраняется и сообщение не отображается.

Вот как я отображаю сообщение:

@if (TempData["Message"] != null)
{
    var message = JsonConvert.DeserializeObject<MessageModel>(TempData["Message"].ToString());
<div class="alert bg-@message.Class text-center alert-dismissible fade show fixed-bottom w-100" role="alert" style="margin:0">
    <h6 class="text-white">@message.Message</h6>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
</div>
}

Вот пример метода:

[HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(Product model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        var product = await _productRepository.GetProductAsync(model.ID);


        product.Name = model.Name; product.ProductCode = model.ProductCode; product.Category = model.Category;
        product.Description = model.Description;
        await _productRepository.UpdateAsync(product);

        TempData["Message"] = JsonConvert.SerializeObject(new MessageModel { Class = "success", Message = "Product has been successfully updated" });
        return RedirectToAction("Edit", new { id = model.ID });
    }

Любая помощь будет оценена.Спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Что ж, благодаря поддержке Общего регламента защиты данных в Asp.net Core, если пользователь (в данном случае я) не согласился на сбор данных, и для приложения CheckConsentNeeded установлено значение true, все несущественные файлы cookie (TempData), Сеансовые куки) не отправляются в браузер.Файлы cookie TempData и Session должны быть включены для отслеживания, прежде чем они станут функциональными.Таким образом, решение заключается в том, чтобы реализовать файл cookieConsentPartial и согласиться, нажав кнопку ОК, или установить для checkConsentNeeded значение по умолчанию, равное false.Вы можете прочитать больше здесь Поддержка Общего регламента защиты данных (GDPR) ЕС в ASP.NET Core

...