Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
mono_crash.*

# Build results
[Bb]uild/
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
Expand Down Expand Up @@ -243,14 +244,6 @@ ClientBin/
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

Expand Down
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"recommendations": [
"EditorConfig.EditorConfig",
"github.vscode-github-actions",
"ms-dotnettools.csharp"
]
}
21 changes: 7 additions & 14 deletions examples/net8.0/aspnetcore/Controllers/HttpClientController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,21 @@
using Microsoft.AspNetCore.Mvc;

namespace aspnetcore.Controllers;

[Route("api/[controller]/[action]")]
[ApiController]
public class HttpClientController : ControllerBase
public class HttpClientController(HttpClient client) : ControllerBase
{
private readonly ILogger<HttpClientController> _logger;

public HttpClientController(ILogger<HttpClientController> logger)
{
_logger = logger;
}

[HttpGet]
public async Task<ActionResult<IEnumerable<string>>> Get()
{
var client = new HttpClient();
var response = await client.GetAsync("https://postman-echo.com/get?hello=world");
var content = await response.Content.ReadAsStringAsync();
var content = await client.GetStringAsync("https://postman-echo.com/get?hello=world");
return Ok(content);
}

[HttpGet]
public async Task<ActionResult<IEnumerable<string>>> GetError()
{
var client = new HttpClient();
var response = await client.GetAsync("http://postman-echo.com/status/500");
var content = await response.Content.ReadAsStringAsync();
return Ok(content);
Expand All @@ -38,9 +29,11 @@ public async Task<ActionResult<IEnumerable<string>>> GetError()
[HttpPost]
public async Task<ActionResult<string>> Post()
{
var client = new HttpClient();
var response = await client.PostAsync("https://postman-echo.com/post", new StringContent("Hello World"));
using var body = new StringContent("Hello World");
using var response = await client.PostAsync("https://postman-echo.com/post", body);

var content = await response.Content.ReadAsStringAsync();

return Ok(content);
}
}
60 changes: 26 additions & 34 deletions examples/net8.0/aspnetcore/Controllers/MsSqlController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,61 +8,53 @@
using Microsoft.Data.SqlClient;

namespace aspnetcore.Controllers;

[Route("api/[controller]/[action]")]
[ApiController]
public class MsSqlController : ControllerBase
public class MsSqlController(SqlConnection db) : ControllerBase
{
private readonly ILogger<MsSqlController> _logger;
private readonly SqlConnection _db;

public MsSqlController(ILogger<MsSqlController> logger, SqlConnection db)
{
_logger = logger;
_db = db;
}

[HttpGet]
public async Task<ActionResult<IEnumerable<string>>> Tables()
{
this._db.Open();
await db.OpenAsync();

using (var command = _db.CreateCommand())
{
command.CommandText = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
var tables = new List<string>();
await using var command = db.CreateCommand();

command.CommandText = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";

var tables = new List<string>();

using (var reader = await command.ExecuteReaderAsync())
await using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
while (await reader.ReadAsync())
{
tables.Add(reader.GetString(0));
}
tables.Add(reader.GetString(0));
}
return Ok(tables);
}

return Ok(tables);
}

[HttpGet]
public async Task<ActionResult<IEnumerable<string>>> ServerInfo()
{
this._db.Open();
await db.OpenAsync();

using (var command = _db.CreateCommand())
{
command.CommandText = "sp_server_info";
command.CommandType = CommandType.StoredProcedure;
await using var command = db.CreateCommand();

command.CommandText = "sp_server_info";
command.CommandType = CommandType.StoredProcedure;

var serverInfo = new List<string>();
var serverInfo = new List<string>();

using (var reader = await command.ExecuteReaderAsync())
await using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
while (await reader.ReadAsync())
{
serverInfo.Add($"ID={reader.GetInt32(0)} , NAME={reader.GetString(1)} , VALUE={reader.GetString(2)}");
}
serverInfo.Add($"ID={reader.GetInt32(0)} , NAME={reader.GetString(1)} , VALUE={reader.GetString(2)}");
}

return Ok(serverInfo);
}

return Ok(serverInfo);
}
}
24 changes: 10 additions & 14 deletions examples/net8.0/aspnetcore/Controllers/RedisController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,14 @@
using StackExchange.Redis;

namespace aspnetcore.Controllers;

[Route("api/[controller]/[action]")]
[ApiController]
public class RedisController : ControllerBase
public class RedisController(IDatabase database, ILogger<RedisController> logger) : ControllerBase
{
const string LIST_KEY = "list";
private readonly ILogger<RedisController> _logger;
private IDatabase _redisDb;

public RedisController(ILogger<RedisController> logger, IDatabase database)
{
_logger = logger;
_redisDb = database;
}

[HttpGet]
// public async Task<ActionResult<string>> LeftPush([FromBody] LeftPushBody data)
public async Task<ActionResult<string>> LeftPush()
{
if (!ModelState.IsValid)
Expand All @@ -32,16 +24,20 @@ public async Task<ActionResult<string>> LeftPush()
}

var data = new LeftPushBody { Name = "test" };
var length = await _redisDb.ListLeftPushAsync(LIST_KEY, data.Name);
_logger.LogInformation($"LeftPush: {data.Name} - {length}");
var length = await database.ListLeftPushAsync(LIST_KEY, data.Name);

logger.LogInformation("LeftPush: {Name} - {Length}", data.Name, length);

return Ok();
}

[HttpGet]
public async Task<ActionResult<string>> LeftPop()
{
var value = await _redisDb.ListLeftPopAsync(LIST_KEY);
_logger.LogInformation($"LeftPop: {value}");
var value = await database.ListLeftPopAsync(LIST_KEY);

logger.LogInformation("LeftPop: {Value}", value);

return Ok(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,25 @@
using Microsoft.AspNetCore.Mvc;

namespace aspnetcore.Controllers;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
private static readonly string[] Summaries =
[
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};

private readonly ILogger<WeatherForecastController> _logger;

public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
];

[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
return [.. Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
})];
}

public class WeatherForecast
Expand Down
19 changes: 14 additions & 5 deletions examples/net8.0/aspnetcore/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,45 @@

using Grafana.OpenTelemetry;
using Microsoft.Data.SqlClient;
using OpenTelemetry.Logs;
using OpenTelemetry.Trace;
using StackExchange.Redis;

var builder = WebApplication.CreateBuilder(args);

builder.Logging.AddOpenTelemetry(builder => builder.UseGrafana());

builder.Services.AddOpenTelemetry()
.WithMetrics(builder => builder.UseGrafana())
.WithTracing(builder => builder.UseGrafana().AddConsoleExporter());

// Redis
builder.Services.AddSingleton<IConnectionMultiplexer>(
sp => ConnectionMultiplexer.Connect("redis:6379"));
builder.Services.AddScoped(
sp => sp.GetRequiredService<IConnectionMultiplexer>().GetDatabase());
builder.Services.AddSingleton<IConnectionMultiplexer>(sp => ConnectionMultiplexer.Connect("redis:6379"));
builder.Services.AddScoped(sp => sp.GetRequiredService<IConnectionMultiplexer>().GetDatabase());

// MSSQL
// Microsoft SQL Server
builder.Services.AddTransient(sp =>
{
var connectionString = "Server=mssql,1433;Database=master;User=sa;Password=Password12345%%;Encrypt=False;TrustServerCertificate=True";
return new SqlConnection(connectionString);
});

builder.Services.AddHttpClient();

builder.Services.AddControllers();

// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI();

app.UseAuthorization();
app.MapControllers();

app.MapGet("/", () => Results.Redirect("/swagger"));

app.Run();
8 changes: 0 additions & 8 deletions examples/net8.0/aspnetcore/appsettings.Development.json

This file was deleted.

3 changes: 2 additions & 1 deletion examples/net8.0/aspnetcore/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
"Microsoft.AspNetCore": "Warning",
"System": "Warning"
}
},
"AllowedHosts": "*"
Expand Down
8 changes: 4 additions & 4 deletions examples/net8.0/aspnetcore/aspnetcore.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.20.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.9.0" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.9.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.2" />
</ItemGroup>

<ItemGroup>
Expand Down