Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 浏览器后退按钮不执行控制器方法_Caching_Asp.net Core_Browser_Back Button - Fatal编程技术网

Caching 浏览器后退按钮不执行控制器方法

Caching 浏览器后退按钮不执行控制器方法,caching,asp.net-core,browser,back-button,Caching,Asp.net Core,Browser,Back Button,我在asp.NETCore工作。我面临一个问题,即当我通过浏览器返回按钮返回上次访问的网页时,我的控制器操作方法没有被执行 当我们按下后退按钮时,浏览器从缓存中获取数据。因此,如果我们想要执行控制器操作方法,我们需要防止浏览器缓存该页面 我在谷歌上搜索了很多。通过这个,我在ASP.NETMVC中找到了很多基于缓存的解决方案。比如,禁用缓存 我检查了这个网站,也试了一下。 . 它不起作用了 我们正在根据cookies执行一些操作。所以禁用缓存,也不应该清除这个 在ASP.NET Core中,当按下

我在asp.NETCore工作。我面临一个问题,即当我通过浏览器返回按钮返回上次访问的网页时,我的控制器操作方法没有被执行

当我们按下后退按钮时,浏览器从缓存中获取数据。因此,如果我们想要执行控制器操作方法,我们需要防止浏览器缓存该页面

我在谷歌上搜索了很多。通过这个,我在ASP.NETMVC中找到了很多基于缓存的解决方案。比如,禁用缓存

我检查了这个网站,也试了一下。 . 它不起作用了

我们正在根据cookies执行一些操作。所以禁用缓存,也不应该清除这个

在ASP.NET Core中,当按下浏览器后退按钮时,是否有其他方法执行控制器操作方法


提前感谢。

使用无缓存时应小心。对于缓存,它在性能方面起着重要作用

如果要设置没有缓存的特定控制器操作,可以执行以下操作:

在Startup.cs中配置缓存配置文件

使用

如果坚持所有请求都不缓存,请尝试中间件

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.Use(async (context, next) =>
        {
            context.Response.OnStarting(() =>
            {
                if (context.Response.Headers.ContainsKey("Cache-Control"))
                {
                    context.Response.Headers["Cache-Control"] = "no-cache,no-store";
                }
                else
                {
                    context.Response.Headers.Add("Cache-Control", "no-cache,no-store");
                }
                if (context.Response.Headers.ContainsKey("Pragma"))
                {
                    context.Response.Headers["Pragma"] = "no-cache";
                }
                else
                {
                    context.Response.Headers.Add("Pragma", "no-cache");
                }
                return Task.FromResult(0);
            });
            await next.Invoke();
        });
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

完美的解决了我的问题。谢谢你的来信
[ResponseCache(CacheProfileName = "Never")]
public IActionResult Index()
{
    return View();
}    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.Use(async (context, next) =>
        {
            context.Response.OnStarting(() =>
            {
                if (context.Response.Headers.ContainsKey("Cache-Control"))
                {
                    context.Response.Headers["Cache-Control"] = "no-cache,no-store";
                }
                else
                {
                    context.Response.Headers.Add("Cache-Control", "no-cache,no-store");
                }
                if (context.Response.Headers.ContainsKey("Pragma"))
                {
                    context.Response.Headers["Pragma"] = "no-cache";
                }
                else
                {
                    context.Response.Headers.Add("Pragma", "no-cache");
                }
                return Task.FromResult(0);
            });
            await next.Invoke();
        });
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }