1-创建 Ocelot 网关 webapi

 2-添加引用

https://www.cnblogs.com/wucy/p/13353824.html

1
2
3
Install-Package nacos-sdk-csharp -Version 1.3.5
Install-Package Ocelot.Provider.Nacos -Version 1.3.5
Install-Package Ocelot.Provider.Polly -Version 1.3.5

  3-配置 appsettings.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "GlobalConfiguration": {
    "ServiceDiscoveryProvider": {
      "Type": "Nacos"  //开启服务发现
    }
  },
  "Nacos": {
    "Listeners": [ //对应配置文件
      {
        "Optional": false,
        "DataId": "common", //配置名称
        "Group": "DEFAULT_GROUP" //组名
      },
      {
        "Optional": false,
        "DataId": "gateway",
        "Group": "DEFAULT_GROUP"
      }
    ],
    "DefaultTimeOut": 15,
    "ListenInterval": 1000,
    "ServiceName": "gatewayApiSrv",
    "Namespace": "public", //对应的是命名空间的Id
    "ServerAddresses": [ "http://ip地址:8848/" ], //是Nacos的服务器地址,可以添加多个
    "UserName": "nacos",
    "Password": "1Q2w3e4r$",
    "RegisterEnabled": true,
    "InstanceEnabled": true,
    "LBStrategy": "WeightRoundRobin",
    "ConfigUseRpc": false, //false-http协议,true-grpc
    "NamingUseRpc": false //false-http协议,true-grpc
  },
  "Urls": "http://*:5100"
}

  4- nacos 配置

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
    "Routes":[
        {
            "ServiceName":"userApiSrv",
            "UpstreamPathTemplate":"/api/Account/Login",
            "UpstreamHttpMethod": [ "Get","Post","Put", "Delete" ],
            "LoadBalancerOptions": {
                "Type": "LeastConnection"
            },
            "UseServiceDiscovery": true,
            "DownstreamPathTemplate":"/api/Account/Login",
            "DownstreamScheme":"http",
            "DownstreamHostAndPorts":[
                {
                    "Host": "192.168.108.115",
                    "Port": 5101
                }
            ]
        },
        {
            "ServiceName":"userApiSrv",
            "UpstreamPathTemplate":"/api/Account/Detail/{id}",
            "UpstreamHttpMethod": [ "Get"],
            "LoadBalancerOptions": {
                "Type": "LeastConnection"
            },
            "UseServiceDiscovery": true,
            "DownstreamPathTemplate":"/api/Account/Detail/{id}",
            "DownstreamScheme":"http",
            "DownstreamHostAndPorts":[
                {
                    "Host": "192.168.108.115",
                    "Port": 5101
                }
            ]
        }
    ]
}

  网关参数配置请参考:https://www.cnblogs.com/jesse2013/p/net-core-apigateway-ocelot-docs.html

     5- 配置 program.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using Serilog;
using Microsoft.AspNetCore.Mvc;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using MicroSrv.User.HostApi.JSON;
using Kinwong.Logger;
using Kinwong.Swagger.NSwag;
using Nacos.AspNetCore.V2;
using Nacos.V2.DependencyInjection;
using Ocelot.DependencyInjection;
using Ocelot.Provider.Nacos;
using Ocelot.Middleware;
 
var builder = WebApplication.CreateBuilder(args);
 
// Add services to the container.
builder.Services.AddNacosAspNet(builder.Configuration, section: "Nacos");
builder.Services.AddOcelot().AddNacosDiscovery(section: "Nacos");
builder.Host.UseNacosConfig("Nacos", logAction: x => x.AddSerilog());
builder.Services.AddOptions();
//builder.Services.AddNacosWeb(builder.Configuration, builder.Configuration, section: "Nacos");
var _myAllowSpecificOrigins = "_myAllowSpecificOrigins";
builder.Host.UseSerilog((context, services, logger) =>
{
    logger.ReadFrom.Configuration(context.Configuration)
          .ReadFrom.Services(services);
    logger.Enrich.FromLogContext();
});
builder.Services.Configure<ApiBehaviorOptions>(options =>
{
    //禁用自定义验证
    options.SuppressModelStateInvalidFilter = true;
 
    //options.InvalidModelStateResponseFactory = context =>
    //{
    //    var error = context.ModelState.GetValidationSummary();
    //    ////自定义自己想要返回的数据结果,我这里要返回的是Json对象,通过引用Newtonsoft.Json库进行转换
    //    var payload = JsonConvert.SerializeObject(Result.Error(HttpStatusCode.BadRequest.ToCode(), error));
    //    //////自定义返回的数据类型
    //    //context.HttpContext.Response.ContentType = "application/json";
    //    //////自定义返回状态码,默认为401 我这里改成 200
    //    //context.HttpContext.Response.StatusCode = StatusCodes.Status200OK;
    //    //////context.Response.StatusCode = StatusCodes.Status401Unauthorized;
    //    //////输出Json数据结果
    //    //context.HttpContext.Response.WriteAsync(payload);
    //    return new ObjectResult(error);
    //};
});
builder.Services.AddHttpContextAccessor();
builder.Services.AddCors(c =>
{
    //https://learn.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-6.0
    var cors = builder.Configuration.GetSection("Cors").Value;
    if (!string.IsNullOrWhiteSpace(cors))
    {
        c.AddPolicy(_myAllowSpecificOrigins, policy =>
        {
            policy.WithOrigins(cors.Split(','))
                .AllowAnyMethod()
                .AllowAnyHeader();
        });
    }
    else
    {
        c.AddPolicy(_myAllowSpecificOrigins, policy =>
        {
            policy.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader();
        });
    }
});
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        //https://learn.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?view=aspnetcore-6.0
        //配置 小写 格式,而不是默认的 camelCase 格式
        options.JsonSerializerOptions.PropertyNamingPolicy = new LowercasePolicy();
        //中文转义处理
        options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
        //忽略大小写
        options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    });
builder.Services.AddNSwagger(title: "Gateway系统API接口文档", description: "API接口说明文档", contact: new NSwag.OpenApiContact { Url = "", Name = "" });
 
var app = builder.Build();
app.UseSerilogRequestLogging();
app.UseNSwagger();
app.UseOcelot().Wait();
app.UseAuthentication();
app.UseAuthorization();
// Configure the HTTP request pipeline.
app.MapControllers();
app.Run();

  

 

 启动服务就可以了,然后根据配置路由就可以访问其他的服务了

 

posted @ 2023-08-15 18:10 细品人生 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 1-创建一个 WebApi 2- 添加引用 Install-Package nacos-sdk-csharp -Version 1.3.5 Install-Package nacos-sdk-csharp.AspNetCore -Version 1.3.5 Install-Package nacos 阅读全文
posted @ 2023-08-15 18:00 细品人生 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 文档:https://nacos.io/zh-cn/docs/deployment.html 1-安装 nacos 1.1-解压 tar -zxvf nacos-server-2.2.3.tar.gz -C /usr/local 1.2-开启鉴权 cd /usr/local/nacos/conf v 阅读全文
posted @ 2023-08-15 17:30 细品人生 阅读(757) 评论(0) 推荐(1) 编辑
摘要: 模板 https://ocelot.readthedocs.io/en/latest/features/configuration.html https://zhuanlan.zhihu.com/p/584291049 { "DownstreamPathTemplate": "/", -- 下游 U 阅读全文
posted @ 2022-11-30 17:15 细品人生 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 背景 现在比较流行微服务部署:方便快速迭代且不影响其他业务系统 nacos 之前想转java 然后关注了一下java 方面的技术,后面接触了nacos 所以就用nacos 来作为服务注册和配置中心 接下来让我们开始吧 安装nacos 请参考这里:教程 开始编码 创建2 个 webapi 项目,一个类 阅读全文
posted @ 2022-11-25 16:58 细品人生 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 原文地址:https://cloud.tencent.com/developer/column/89717 课程介绍 内容综述 Net Core 的现状、未来以及环境搭建 Startup:掌握ASP.NET Core 的启动过程 依赖注入:良好架构的起点 上篇 中篇 下篇 作用域与对象释放行为 上篇 阅读全文
posted @ 2022-02-08 08:33 细品人生 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1-创建公共类库 IDS4.Core 1.1-引用 IdentityServer4 1.2-创建 Config.cs 配置类 1 using IdentityServer4.Models; 2 3 namespace IDS4.Core.ClientCredentials 4 { 5 /// <su 阅读全文
posted @ 2022-01-05 15:20 细品人生 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 简化版 标准版 完整版 阅读全文
posted @ 2021-12-13 13:20 细品人生 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 1-快捷键 动作 macOS Windows Show Command Palette Cmd + Shift + P 或 F1 Ctrl+ Shift + P 或 F1 Go To Definition F12 F12 Go Back Ctrl +- Alt + 左箭头 Go Forward Ct 阅读全文
posted @ 2021-10-17 22:41 细品人生 阅读(110) 评论(0) 推荐(0) 编辑
摘要: PS:文档地址 https://docs.abp.io/zh-Hans/abp/latest/Data-Access 1-生成数据库脚本 1.1-迁移命令知识点 https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/ 阅读全文
posted @ 2021-07-19 15:04 细品人生 阅读(410) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示