[当我尝试在程序类中添加ocelot时,由于文档指定应执行vs2019,我在用.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。
using Ocelot.DependencyInjection; //For Dependency Injection
using Ocelot.Middleware; //For middleware
参考Ocelot : Getting Started[Source code for 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); } } }
Source for middleware
namespace Ocelot.Middleware { //... public static class OcelotMiddlewareExtensions { public static async Task<IApplicationBuilder> UseOcelot(this IApplicationBuilder builder) { await builder.UseOcelot(new OcelotPipelineConfiguration()); return builder; } //...