Microsoft.AspNetCore.Mvc.Controller.TempData.get возвратил ноль - PullRequest
0 голосов
/ 31 января 2019

ниже ошибки msg.

System.NullReferenceException: 'Object reference not set to an instance of an object.'

Microsoft.AspNetCore.Mvc.Controller.TempData.get returned null.

Я получаю эту ошибку, пока:

TempData["test"] = "test"; //this is for testing
TempData["test"] = someObj; //this is my aim, but I'm getting the same error

Я не знаю, имеет ли это значение, но я запускаю конструктор классаэто контроллер, а затем метод отражением (method.Invoke(instanceConstructor, new object[] { colums });).Во время логики в этом методе я пытаюсь использовать TempData

Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

public class Startup
{
    public Startup(IConfiguration configuration) => Configuration = configuration;
    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            //options.CheckConsentNeeded = context => true; //this option my startup dosent know what it is. even if I copy/paste using's from github example, I just added those to the topic
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddDistributedMemoryCache();
        services.AddMemoryCache();
        services.AddMvc() //.AddSessionStateTempDataProvider(); I tried with and without
        services.AddSession();
    }

    public void Configure(IApplicationBuilder app) //, IHostingEnvironment env
    {
        app.UseSession();
        app.UseAuthentication();
        app.UseMvcWithDefaultRoute();
        app.UseCookiePolicy();
      }
}

это забавно, потому что в другом контроллере TempData работает нормально,Я проверил usings с этих контроллеров, и те usings одинаковы.

TempData работает с ProductController для строковых типов TempData["message"] = $"'{deletedProduct.Name}' - produkt został usunięty"; работает без app.UseCookiePolicy(); и в ProductController

Я нашел тему, которая перенаправляет меня в msdn с советами по добавлению app.UseCookiePolicy(); и options to cokies, но, как я уже сказал, это не работает для меня

Я использую ядро ​​2.0

Пожалуйста, объясните, почему TempData не работает должным образом, или помогите найти ошибку в моем приложении

1 Ответ

0 голосов
/ 02 февраля 2019

Я не знаю, имеет ли это значение, но я запускаю конструктор класса, который является контроллером, а затем метод с помощью отражения (method.Invoke (instanceConstructor, new object [] {colums});).Во время логики в этом методе я пытаюсь использовать TempData

, это имеет значение!- Сеансы и временные данные не работают в вызываемых методах с помощью отражения.

...