如何在asp.net Core 2.0中使用ResponseCache

时间:2018-01-18 10:06:11

标签: c# asp.net asp.net-core

我尝试按照here的答案(最高投票,未被接受)在我的asp.net核心2.0项目中实施ResponseCaching

然而我收到错误:

  

InvalidOperationException:无法从根提供程序解析作用域服务“Microsoft.AspNetCore.ResponseCaching.Internal.IResponseCachingPolicyProvider”。   Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator.ValidateResolution(类型serviceType,ServiceProvider serviceProvider)

我采取的步骤是:

1在Startup中添加接口绑定,如下所示:

    services.AddScoped<IResponseCachingPolicyProvider, ResponseCachingPolicyProvider>();

2像这样添加响应缓存中间件:

    public void Configure(IApplicationBuilder application)
{
    application
        .UseResponseCaching()
        .UseMvc();
}

3将标签添加到我的控制器中,如下所示:

 [ResponseCache(Duration = 3600)]

我试图获得与在过去的asp.net版本中添加[OutputCache(NoStore = true, Duration = 0)]相同的行为。

1 个答案:

答案 0 :(得分:2)

要为响应缓存添加必要的服务,您应该在ConfigureServices类的Startup中使用此扩展方法:

services.AddResponseCaching();

您可以在此处查看其源代码:https://github.com/aspnet/ResponseCaching/blob/dev/src/Microsoft.AspNetCore.ResponseCaching/ResponseCachingServicesExtensions.cs#L21