37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using Sample.MySql.DbContexts;
|
|
using ShardingCore.Core.RuntimeContexts;
|
|
using ShardingCore.Extensions;
|
|
|
|
namespace Sample.MySql
|
|
{
|
|
|
|
public class NoReadWriteMiddleware
|
|
{
|
|
private readonly RequestDelegate _next;
|
|
|
|
public NoReadWriteMiddleware(RequestDelegate next)
|
|
{
|
|
_next = next;
|
|
}
|
|
|
|
public async Task Invoke(HttpContext context)
|
|
{
|
|
if (context.Request.Path.ToString().StartsWith("/admin"))
|
|
{
|
|
var shardingRuntimeContext = context.RequestServices.GetService<IShardingRuntimeContext<DefaultShardingDbContext>>();
|
|
var shardingReadWriteManager = shardingRuntimeContext.GetShardingReadWriteManager();
|
|
using (var scope = shardingReadWriteManager.CreateScope())
|
|
{
|
|
shardingReadWriteManager.GetCurrent().SetReadWriteSeparation(9999,false);
|
|
await _next(context);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
await _next(context);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
} |