繁体   English   中英

Microsoft.AspNetCore.Mvc.Controller.TempData.get返回null

[英]Microsoft.AspNetCore.Mvc.Controller.TempData.get returned null

低于错误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

启动文件

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();提示app.UseCookiePolicy(); options to cokies但就像我说的那样对我不起作用

我正在使用核心2.0

请解释为什么TempData无法正常工作,或帮助发现我的应用程序中的错误

我不知道这是否重要,但是我运行的是类的构造函数,它是一个控制器,然后通过反射来运行(method.Invoke(instanceConstructor,new object [] {colums});)。 在该方法的逻辑期间,我正在尝试使用TempData

有关系! -会话和临时数据通过反射在调用的方法上工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM