I only allow {parallelRequestsToController} parallel requests per user. Try again soon.
"; - body = System.Text.Encoding.UTF8.GetBytes(bodyText); + responseBody = System.Text.Encoding.UTF8.GetBytes(bodyText); } public async Task InvokeAsync(HttpContext context, int idUser, string controllerName) @@ -41,14 +42,16 @@ namespace AsbCloudWebApi.Middlewares { await next(context); return; - } + } var userStat = stat.GetOrAdd(idUser, idUser => new()); - var count = userStat.AddOrUpdate(controllerName, 1, (key, value) => value + 1); - if(count < parallelRequestsToController) + var count = userStat.AddOrUpdate(controllerName, 0, (k, v) => v); + + if(count + 1 < parallelRequestsToController) { try { + userStat[controllerName]++; await next(context); } finally @@ -60,10 +63,9 @@ namespace AsbCloudWebApi.Middlewares { context.Response.Clear(); context.Response.StatusCode = (int)System.Net.HttpStatusCode.TooManyRequests; - context.Response.Headers.RetryAfter = "1000"; context.Response.Headers.ContentType = "text/html"; - await context.Response.BodyWriter.WriteAsync(body); + await context.Response.BodyWriter.WriteAsync(responseBody); } } } diff --git a/AsbCloudWebApi/wwwroot/index.html b/AsbCloudWebApi/wwwroot/index.html index 80927d26..74bafd67 100644 --- a/AsbCloudWebApi/wwwroot/index.html +++ b/AsbCloudWebApi/wwwroot/index.html @@ -1 +1,17 @@ -