微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ocelot 网关不想应用微服务路由

如何解决Ocelot 网关不想应用微服务路由

将单体应用程序分成几个微服务,现在我对如何一起运行它们很感兴趣。 所以,我正在为此构建豹猫网关。还有一些问题。

我尝试将一个简单的微服务与主 API 链接起来。如果我转到网关路由并查询我的微服务 => 我会得到 404。但是,如果我转到该微服务的 uri 我会得到信息。

Ocelot.json / ocelot.Development.json

{
  "Routes": [
    {
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost","Port": 7001
        }
      ],"DownstreamPathTemplate": "/order","DownstreamScheme": "https","UpstreamPathTemplate": "/order","UpstreamHttpMethod": [ "GET" ]
    }
  ],"GlobalConfiguration": {
    "BaseUrl": "https://localhost:5001"
  }
}

程序:

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog((hostingContext,loggerConfiguration) =>
                {
                    loggerConfiguration.ReadFrom
                        .Configuration(hostingContext.Configuration);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    var environment = Environment.GetEnvironmentvariable("ASPNETCORE_ENVIRONMENT");

                    webBuilder.ConfigureAppConfiguration(config =>
                    {
                        config
                            .AddJsonFile("ocelot.json")
                            .AddJsonFile($"ocelot.{environment}.json");
                    });

                    webBuilder.UseStartup<Startup>();
                });

启动:

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

            app.UseRouting();
            app.UseAuthorization();
            app.UseAuthentication();
            app.UseSerilogRequestLogging();
            app.UseCors(_AllowSpecificOrigin);

            app.UseSwagger(options =>
            {
                options.SerializeAsV2 = true;
            });

            app.UseSwaggerUI(options =>
            {
                options.SwaggerEndpoint("/swagger/v1/swagger.json","ShoppingCart API");
                options.RoutePrefix = string.Empty;
            });

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapControllerRoute(
                    "default","{controller=Products}/{action=GetAll}/{id?}");
            });

            app.USEOcelot();
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。