ASP.NET Core 2.1 - Ошибка реализации MemoryCache - PullRequest
0 голосов
/ 05 декабря 2018

Я выполнял шаги, указанные здесь для реализации MemoryCache в ASP.NET Core, и когда я запускаю приложение (dotnet run из командной строки), я получаю следующую ошибку.

System.InvalidOperationException: невозможно разрешить службу для типа «Microsoft.Extensions.Caching.Distributed.IDistributedCache» при попытке активировать «Microsoft.AspNetCore.Session.DistributedSessionStore».

Что меня смущает, так это то, что я использую services.AddMemoryCache() и НЕ services.AddDistributedMemoryCache().Полная трассировка стека доступна в этом bin .У меня есть только эти пакеты, на которые имеются ссылки

<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" />

My Configure

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseStaticFiles();
    app.UseSpaStaticFiles();
    app.UseSession();
    app.UseCors(
        builder => builder
            .WithOrigins("http://localhost:4200")
            .AllowAnyHeader()
            .AllowAnyMethod()
            .AllowAnyOrigin()
            .AllowCredentials());
    app.UseMvc(
        routes =>
        {
            routes.MapRoute(
                "default",
                "api/{controller}/{action}/{id?}");
        });
}

ConfigureServices

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
    services
        .AddMvcCore()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
        .AddJsonFormatters();

    services.AddMemoryCache();

    // Angular files will be served from this directory
    services.AddSpaStaticFiles(configuration => { configuration.RootPath = "wwwroot"; });
    services.AddSession(
        options =>
        {
            // Set a short timeout for easy testing.
            options.IdleTimeout = TimeSpan.FromHours(1);
            options.Cookie.HttpOnly = true;
        });
}

Program.cs

  public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
    }

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

1 Ответ

0 голосов
/ 05 декабря 2018

Кажется, что вы пытаетесь внедрить IDistributedCache , который отличается от кэша памяти.Распределенный кеш будет использовать внешние сервисы для хранения кеша, а кеш-память будет использовать память серверов.

Как я уже говорил, где-то используется распределенный кеш.И это что-то является сеансом

С этой страницы

Поставщик сеанса по умолчанию в ASP.NET Core загружает записи сеанса из базового IDistributedCache

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...