Я использую asp net core 3.0 для моего проекта WEB API. Я создал промежуточное программное обеспечение. В промежуточном программном обеспечении я сталкиваюсь со странной проблемой. Когда я сохранил точку отладки в InvokeAsyn c (), я заметил, что InvokeAsyn c () вызывается автоматически и непрерывно. При дальнейшей отладке я обнаружил, что запрос HEAD вызывается автоматически и вызывает функцию InvokeAsyn c (). Предположим, что URL для моего проекта: http://localhost: 5000 / , тогда я получаю непрерывные запросы на http://localhost: 5000 / методом HEAD.
Промежуточное программное обеспечение
public class ErrorHandlerMiddleware
{
private readonly RequestDelegate _next;
public ErrorHandlerMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception exception)
{
await HandleErrorAsync(context, exception);
}
}
private static Task HandleErrorAsync(HttpContext context, Exception exception)
{
var response = new { message = exception.Message };
var payload = JsonConvert.SerializeObject(response);
context.Response.ContentType = "application/json";
context.Response.StatusCode = 400;
return context.Response.WriteAsync(payload);
}
}
Startup.cs (только упоминание Configure ())
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
//app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMiddleware<ErrorHandlerMiddleware>();
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("../swagger/v1/swagger.json", "My API V1");
});
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors("CorsPolicy");
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
//Configuring serilog
loggerFactory.AddSerilog();
}