«IServiceCollection» не содержит определения для «AddOcelot» - PullRequest
1 голос
/ 09 января 2020

У меня проблема с реализацией Ocelot с помощью. NET Core 3.0, когда я пытаюсь добавить ocelot в мой класс программы, поскольку в документации указано, что должно быть сделано, vs2019 показывает мне эту ошибку:

«IServiceCollection» не содержит определения «AddOcelot» или доступного метода расширения «AddOcelot», который принимает первый аргумент типа «IServiceCollection» (какая-либо директива использует или ссылка на сборку отсутствует?),

Эта ошибка также повторяется для UseOcelot() метода

public class Program
{
    public static void Main(string[] args)
    {
        new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .ConfigureAppConfiguration((context, config) => 
            {
                config
                    .SetBasePath(context.HostingEnvironment.ContentRootPath)
                    .AddJsonFile("appsettings.json", true, true)
                    .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", true, true)
                    .AddJsonFile("ocelot.json")
                    .AddEnvironmentVariables();
            }).ConfigureServices(s => {
                s.AddOcelot().AddConsul();
            }).ConfigureLogging((hostingContext, logging) =>
            {
                logging.AddConsole();
            })
            .UseIIS()
            .Configure(app =>
            {
                app.UseOcelot().Wait();
            })
            .Build().Run();
    }
}

что я могу сделать для устранения этой ошибки? Я уже установил пакеты Nuget Ocelot версии 13.8.0 и Ocelot.Provider.Consul версия 13.8.0.

1 Ответ

1 голос
/ 09 января 2020

Убедитесь, что включены необходимые пространства имен

using Ocelot.DependencyInjection; //For Dependency Injection
using Ocelot.Middleware; //For middleware

Ссылка Ocelot: Начало работы

Исходный код для DI

namespace Ocelot.DependencyInjection
{
    public static class ServiceCollectionExtensions
    {
        public static IOcelotBuilder AddOcelot(this IServiceCollection services)
        {
            var configuration = services.BuildServiceProvider()
                .GetRequiredService<IConfiguration>();
            return new OcelotBuilder(services, configuration);
        }

        public static IOcelotBuilder AddOcelot(this IServiceCollection services, IConfiguration configuration)
        {
            return new OcelotBuilder(services, configuration);
        }
    }
}

Источник для промежуточного программного обеспечения

namespace Ocelot.Middleware
{

    //...

    public static class OcelotMiddlewareExtensions
    {
        public static async Task<IApplicationBuilder> UseOcelot(this IApplicationBuilder builder)
        {
            await builder.UseOcelot(new OcelotPipelineConfiguration());
            return builder;
        }

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