提交 6d555846 编写于 作者: lwplvx's avatar lwplvx

加入 httpreports,consul

上级 6f300342
......@@ -404,3 +404,5 @@ ASALocalRun/
# Local History for Visual Studio
.localhistory/
appsettings.Development.json
.ionide
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<PackageReference Include="ocelot" Version="17.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers\" />
</ItemGroup>
</Project>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace Aurora.Gateway.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
}
......@@ -20,7 +20,12 @@ namespace Aurora.Gateway
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder
.ConfigureAppConfiguration((hostingContext, cfg) =>
{
cfg.AddJsonFile("ocelot.json", false, true);
})
.UseStartup<Startup>();
});
}
}
......@@ -22,7 +22,7 @@
"dotnetRunMessages": "true",
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"applicationUrl": "http://localhost:6000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
......
......@@ -11,6 +11,8 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Models;
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
namespace Aurora.Gateway
{
......@@ -25,13 +27,14 @@ namespace Aurora.Gateway
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Aurora.Gateway", Version = "v1" });
});
services.AddOcelot(Configuration);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
......@@ -54,6 +57,9 @@ namespace Aurora.Gateway
{
endpoints.MapControllers();
});
app.UseOcelot().Wait();
}
}
}
using System;
namespace Aurora.Gateway
{
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string Summary { get; set; }
}
}
{
"ReRoutes": [
{
"UseServiceDiscovery": true,
"DownstreamPathTemplate": "/",//下游请求地址模板
"DownstreamScheme": "http",
"ServiceName": "Aurora.Core.ClientService",
"LoadBalancerOptions": {
"Type": "RoundRobin"
},
"UpstreamPathTemplate": "/api",//请求路路径模板
"UpstreamHttpMethod": [ "Get", "Post" ],
"ReRoutesCaseSensitive": false // non case sensitive
}
],
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "localhost", // Consul Service IP
"Port": 8500 // Consul Service Port
}
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="HttpReports.Dashboard" Version="2.5.14" />
<PackageReference Include="HttpReports.MySQL" Version="2.5.14" />
</ItemGroup>
</Project>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Aurora.HttpRepots
{
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.UseStartup<Startup>();
});
}
}
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:8605",
"sslPort": 44326
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Aurora.HttpRepots": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "http://localhost:7000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Aurora.HttpRepots
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpReportsDashboard().AddMySqlStorage();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/hello", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
app.UseHttpReportsDashboard();
}
}
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
using System;
using Consul;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
namespace Aurora.Core.Api
{
public class ServiceEntity
{
public string IP { get; set; }
public int Port { get; set; }
public string ServiceName { get; set; }
public string ConsulIP { get; set; }
public int ConsulPort { get; set; }
}
public static class AppBuilderExtensions
{
public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app, IHostApplicationLifetime lifetime, ServiceEntity serviceEntity)
{
var consulClient = new ConsulClient(x => x.Address = new Uri($"http://{serviceEntity.ConsulIP}:{serviceEntity.ConsulPort}"));//请求注册的 Consul 地址
var httpCheck = new AgentServiceCheck()
{
DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后注册
Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔,或者称为心跳间隔
HTTP = $"http://{serviceEntity.IP}:{serviceEntity.Port}/api/health",//健康检查地址
Timeout = TimeSpan.FromSeconds(5)
};
// Register service with consul
var registration = new AgentServiceRegistration()
{
Checks = new[] { httpCheck },
ID = Guid.NewGuid().ToString(),
Name = serviceEntity.ServiceName,
Address = serviceEntity.IP,
Port = serviceEntity.Port,
Tags = new[] { $"urlprefix-/{serviceEntity.ServiceName}" }//添加 urlprefix-/servicename 格式的 tag 标签,以便 Fabio 识别
};
consulClient.Agent.ServiceRegister(registration).Wait();//服务启动时注册,内部实现其实就是使用 Consul API 进行注册(HttpClient发起)
lifetime.ApplicationStopping.Register(() =>
{
consulClient.Agent.ServiceDeregister(registration.ID).Wait();//服务停止时取消注册
});
return app;
}
}
}
\ No newline at end of file
......@@ -7,9 +7,12 @@
<ItemGroup>
<PackageReference Include="Automapper" Version="10.1.1" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
<PackageReference Include="Consul" Version="1.6.10.1" />
<PackageReference Include="HttpReports" Version="2.5.14" />
<PackageReference Include="HttpReports.Transport.Http" Version="2.5.14" />
<PackageReference Include="MySql.EntityFrameworkCore" Version="5.0.3.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.15" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.22" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
</ItemGroup>
<ItemGroup>
......
using Microsoft.AspNetCore.Mvc;
namespace Aurora.Core.Api.Controllers
{
[Produces("application/json")]
[Route("api/Health")]
public class HealthController : Controller
{
[HttpGet]
public IActionResult Get() => Ok("ok");
}
}
......@@ -31,7 +31,7 @@ namespace Aurora.Core.Api
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpReports().AddHttpTransport();
services.AddControllers();
services.AddSwaggerGen(c =>
{
......@@ -44,7 +44,7 @@ namespace Aurora.Core.Api
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IHostApplicationLifetime lifetime)
{
if (env.IsDevelopment())
{
......@@ -52,6 +52,7 @@ namespace Aurora.Core.Api
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Aurora.Core.Api v1"));
}
app.UseHttpReports();
app.UseHttpsRedirection();
......@@ -63,6 +64,16 @@ namespace Aurora.Core.Api
{
endpoints.MapControllers();
});
// register this service
ServiceEntity serviceEntity = new ServiceEntity
{
// IP = NetworkHelper.LocalIPAddress,
Port = Convert.ToInt32(Configuration["Service:Port"]),
ServiceName = Configuration["Service:Name"],
ConsulIP = Configuration["Consul:IP"],
ConsulPort = Convert.ToInt32(Configuration["Consul:Port"])
};
app.RegisterConsul(lifetime, serviceEntity);
}
}
}
......@@ -6,6 +6,14 @@
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Service": {
"Name": "Aurora.Core.ClientService",
"Port": "5000"
},
"Consul": {
"IP": "localhost",
"Port": "8500"
},
"AllowedHosts": "*",
"ConnectionStrings": {
"Enable": "MySql",
......
......@@ -6,14 +6,14 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.15" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.22" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.15">
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
<PackageReference Include="MySql.EntityFrameworkCore" Version="5.0.3.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.7">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.7" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
......
......@@ -7,7 +7,7 @@
<ItemGroup>
<PackageReference Include="Automapper" Version="10.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
</ItemGroup>
<PropertyGroup>
......
......@@ -3,41 +3,45 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.6.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Auth", "Aurora.Auth\Aurora.Auth.csproj", "{A72E1001-C37D-4A6F-9A8C-FE75FF130657}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Auth", "Aurora.Auth\Aurora.Auth.csproj", "{A72E1001-C37D-4A6F-9A8C-FE75FF130657}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.WebHost", "Aurora.WebHost\Aurora.WebHost.csproj", "{08EE3E88-A3C6-48E8-9068-D99AA7E77048}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.WebHost", "Aurora.WebHost\Aurora.WebHost.csproj", "{08EE3E88-A3C6-48E8-9068-D99AA7E77048}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Gateway", "Aurora.Gateway\Aurora.Gateway.csproj", "{E7850F7D-F911-4D69-B5A0-CFE28EA39FBC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Gateway", "Aurora.Gateway\Aurora.Gateway.csproj", "{E7850F7D-F911-4D69-B5A0-CFE28EA39FBC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Aurora.Micorservices", "Aurora.Micorservices", "{584A022C-ACAE-47E9-9D53-55FF40DC664D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Aurora.Core", "Aurora.Core", "{DE864DFA-7032-4A52-9B73-7DA794FAE2EA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Core.Api", "Aurora.Micorservices\Aurora.Core\Aurora.Core.Api\Aurora.Core.Api.csproj", "{73E41DAF-D5DE-4702-AB2E-F93CAE277EF5}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Core.Api", "Aurora.Micorservices\Aurora.Core\Aurora.Core.Api\Aurora.Core.Api.csproj", "{73E41DAF-D5DE-4702-AB2E-F93CAE277EF5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Core.Domain", "Aurora.Micorservices\Aurora.Core\Aurora.Core.Domain\Aurora.Core.Domain.csproj", "{F57C40C2-7F48-4360-8AAA-DD50B6518C84}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Core.Domain", "Aurora.Micorservices\Aurora.Core\Aurora.Core.Domain\Aurora.Core.Domain.csproj", "{F57C40C2-7F48-4360-8AAA-DD50B6518C84}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Core.IService", "Aurora.Micorservices\Aurora.Core\Aurora.Core.IService\Aurora.Core.IService.csproj", "{D4270B1E-D5DD-40D8-9281-54E2EBD38FB7}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Core.IService", "Aurora.Micorservices\Aurora.Core\Aurora.Core.IService\Aurora.Core.IService.csproj", "{D4270B1E-D5DD-40D8-9281-54E2EBD38FB7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Core.EntityFramework", "Aurora.Micorservices\Aurora.Core\Aurora.Core.EntityFramework\Aurora.Core.EntityFramework.csproj", "{8E22664E-C22C-46E0-B970-056C24BEC66F}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Core.EntityFramework", "Aurora.Micorservices\Aurora.Core\Aurora.Core.EntityFramework\Aurora.Core.EntityFramework.csproj", "{8E22664E-C22C-46E0-B970-056C24BEC66F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Core.Service", "Aurora.Micorservices\Aurora.Core\Aurora.Core.Service\Aurora.Core.Service.csproj", "{E500647A-0385-49BF-BE01-3942C8C554A9}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Core.Service", "Aurora.Micorservices\Aurora.Core\Aurora.Core.Service\Aurora.Core.Service.csproj", "{E500647A-0385-49BF-BE01-3942C8C554A9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Infrastructure", "Aurora.Infrastructure\Aurora.Infrastructure.csproj", "{46336F7C-61B1-481B-9860-1868249667B3}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Infrastructure", "Aurora.Infrastructure\Aurora.Infrastructure.csproj", "{46336F7C-61B1-481B-9860-1868249667B3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Common", "Aurora.Common\Aurora.Common.csproj", "{399C1F2A-FE91-4FA8-B1D4-5E077689EED4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Common", "Aurora.Common\Aurora.Common.csproj", "{399C1F2A-FE91-4FA8-B1D4-5E077689EED4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Storage", "Aurora.Micorservices\Aurora.Storage\Aurora.Storage.csproj", "{09AC6731-56CC-4075-B437-78D8D668D481}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Storage", "Aurora.Micorservices\Aurora.Storage\Aurora.Storage.csproj", "{09AC6731-56CC-4075-B437-78D8D668D481}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Aurora.Tenant", "Aurora.Tenant", "{0CD896F9-6F85-438F-A20C-0E10D6F7EF27}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Tenant.Api", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.Api\Aurora.Tenant.Api.csproj", "{C60141C8-0CD0-4ED5-AB10-C0B235F9DC74}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Tenant.Api", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.Api\Aurora.Tenant.Api.csproj", "{C60141C8-0CD0-4ED5-AB10-C0B235F9DC74}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Tenant.Domain", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.Domain\Aurora.Tenant.Domain.csproj", "{06951545-AF8E-4259-AD5B-FD63EC460271}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Tenant.Domain", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.Domain\Aurora.Tenant.Domain.csproj", "{06951545-AF8E-4259-AD5B-FD63EC460271}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Tenant.EntityFramework", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.EntityFramework\Aurora.Tenant.EntityFramework.csproj", "{788035D4-431F-49D1-820B-B7D00A0910C3}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Tenant.EntityFramework", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.EntityFramework\Aurora.Tenant.EntityFramework.csproj", "{788035D4-431F-49D1-820B-B7D00A0910C3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aurora.Tenant.IService", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.IService\Aurora.Tenant.IService.csproj", "{BC10AC86-DDF1-4C0F-B450-DF36BA97F0E1}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.Tenant.IService", "Aurora.Micorservices\Aurora.Tenant\Aurora.Tenant.IService\Aurora.Tenant.IService.csproj", "{BC10AC86-DDF1-4C0F-B450-DF36BA97F0E1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.AdminHost", "Aurora.AdminHost\Aurora.AdminHost.csproj", "{23BC1840-B8C0-458D-A88A-22DFF337D74F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aurora.HttpRepots", "Aurora.HttpRepots\Aurora.HttpRepots.csproj", "{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -48,9 +52,6 @@ Global
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A72E1001-C37D-4A6F-9A8C-FE75FF130657}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A72E1001-C37D-4A6F-9A8C-FE75FF130657}.Debug|Any CPU.Build.0 = Debug|Any CPU
......@@ -64,18 +65,6 @@ Global
{A72E1001-C37D-4A6F-9A8C-FE75FF130657}.Release|x64.Build.0 = Release|Any CPU
{A72E1001-C37D-4A6F-9A8C-FE75FF130657}.Release|x86.ActiveCfg = Release|Any CPU
{A72E1001-C37D-4A6F-9A8C-FE75FF130657}.Release|x86.Build.0 = Release|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Debug|x64.ActiveCfg = Debug|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Debug|x64.Build.0 = Debug|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Debug|x86.ActiveCfg = Debug|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Debug|x86.Build.0 = Debug|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Release|Any CPU.Build.0 = Release|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Release|x64.ActiveCfg = Release|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Release|x64.Build.0 = Release|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Release|x86.ActiveCfg = Release|Any CPU
{8FA15697-05E3-4C77-B5F5-5F9975DE6435}.Release|x86.Build.0 = Release|Any CPU
{08EE3E88-A3C6-48E8-9068-D99AA7E77048}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08EE3E88-A3C6-48E8-9068-D99AA7E77048}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08EE3E88-A3C6-48E8-9068-D99AA7E77048}.Debug|x64.ActiveCfg = Debug|Any CPU
......@@ -244,6 +233,33 @@ Global
{BC10AC86-DDF1-4C0F-B450-DF36BA97F0E1}.Release|x64.Build.0 = Release|Any CPU
{BC10AC86-DDF1-4C0F-B450-DF36BA97F0E1}.Release|x86.ActiveCfg = Release|Any CPU
{BC10AC86-DDF1-4C0F-B450-DF36BA97F0E1}.Release|x86.Build.0 = Release|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Debug|x64.ActiveCfg = Debug|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Debug|x64.Build.0 = Debug|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Debug|x86.ActiveCfg = Debug|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Debug|x86.Build.0 = Debug|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Release|Any CPU.Build.0 = Release|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Release|x64.ActiveCfg = Release|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Release|x64.Build.0 = Release|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Release|x86.ActiveCfg = Release|Any CPU
{23BC1840-B8C0-458D-A88A-22DFF337D74F}.Release|x86.Build.0 = Release|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Debug|x64.ActiveCfg = Debug|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Debug|x64.Build.0 = Debug|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Debug|x86.ActiveCfg = Debug|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Debug|x86.Build.0 = Debug|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Release|Any CPU.Build.0 = Release|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Release|x64.ActiveCfg = Release|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Release|x64.Build.0 = Release|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Release|x86.ActiveCfg = Release|Any CPU
{A3CD4093-20E3-4801-8879-EBDDDEF62F5E}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{DE864DFA-7032-4A52-9B73-7DA794FAE2EA} = {584A022C-ACAE-47E9-9D53-55FF40DC664D}
......@@ -259,4 +275,7 @@ Global
{788035D4-431F-49D1-820B-B7D00A0910C3} = {0CD896F9-6F85-438F-A20C-0E10D6F7EF27}
{BC10AC86-DDF1-4C0F-B450-DF36BA97F0E1} = {0CD896F9-6F85-438F-A20C-0E10D6F7EF27}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B8B3803E-FF59-4728-9EC8-B9C62218C26E}
EndGlobalSection
EndGlobal
......@@ -4,4 +4,7 @@
* [EFCore之增删改查](https://mp.weixin.qq.com/s/Pzqr6a4bfTgFoB4_40JxrA)
* [构建属于你自己的dapr服务发现](https://mp.weixin.qq.com/s/XonGIPMdtCQ3cCLkGrCYQQ)
* [BootstrapBlazor](https://www.blazor.zone/menus)
* [3分钟就会系列,使用Ocelot+Consul搭建微服务吧!](https://www.cnblogs.com/ZaraNet/p/10152879.html)
* [.NET Core微服务之基于Consul实现服务治理](https://www.cnblogs.com/edisonchou/p/9124985.html)
* [8分钟学会Consul集群搭建及微服务概念](https://www.cnblogs.com/ZaraNet/p/10123291.html)
* [httpreports 文档](https://www.yuque.com/httpreports/docs/azyxwc#KHHIP)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册