asp.net-core-3.1 - .net core Ocelot 找不到名为 'ConfigureDevelopment' 或 'Configure' 的公共(public)方法

标签 asp.net-core-3.1 .net-core-3.1 ocelot

下面的代码属于.net core web api,我称之为OcelotApiGateway。

我通过 OcelotApiGateway 上的 nuget 包管理器安装了 Ocelot 16.0.1。

这是我的Program.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;

namespace OcelotApiGateway
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.ConfigureAppConfiguration((host, config) => config.AddJsonFile("ocelot.json"));
                    webBuilder.UseStartup<Startup>();
                });
    }
}

这是Startup.cs

using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Ocelot.DependencyInjection;
using Ocelot.Middleware;

namespace OcelotApiGateway
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddOcelot(Configuration);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public async Task ConfigureAsync(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            await app.UseOcelot();
        }
    }
}

但是在Program.cs中的'CreateHostBuilder(args).Build().Run();'这一行,出现了这个错误

System.InvalidOperationException: 'A public method named 'ConfigureDevelopment' or 'Configure' could not be found in the 'OcelotApiGateway.Startup' type.'

最佳答案

我解决了这个问题,这是我的错。当我在 Configure() 方法中添加 await 时,此方法已被 Visual Studio 自动更改。如下。我后来才意识到这一点。

public async Task ConfigureAsync(IApplicationBuilder app, IWebHostEnvironment env)

这个方法必须是:

public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)

关于asp.net-core-3.1 - .net core Ocelot 找不到名为 'ConfigureDevelopment' 或 'Configure' 的公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63112820/

相关文章:

c# - JWT Token 访问 AuthenticatedUser

c# - 自动将 JWT 加载到 User.Identity (ASP.NET Core 3.1)

entity-framework - Entity Framework 核心3.1抛出 “Include has been used on non entity queryable”异常

c# - Identityserver 4 和 Ocelot

asp.net-core - Asp.Net Core中的多个JWT授权机构/发布者

c# - ocelot 更改配置而不重新启动应用程序

c# - .Net Core 3.1 上的 AutoMapper

c# - Razor 页面运行时编译不起作用

asynchronous - .net core 3.1 中的 ConfigureAwait 警告

c# - 如何从 .net Core 3.1 dll (WPF) 访问调度程序