Мы переносим наши API с. NET Core 2.2 на. NET Core 3.1, и у нас есть промежуточное ПО, которое перехватывает исключения и возвращает HTTP-код. Это метод Invoke:
public async Task Invoke(HttpContext context){
try
{
_logger.LogDebug("Invoke: Before _next invoke.");
await _next(context);
_logger.LogDebug("Invoke: Get Response Body.");
context.Response.Body.Seek(0, SeekOrigin.Begin);
string text = await new StreamReader(context.Response.Body).ReadToEndAsync();
context.Response.Body.Seek(0, SeekOrigin.Begin);
_logger.LogDebug("Invoke: Process the response and continue.");
ProcessingRestfulResponse(context, text);
}
catch (NotFoundException notFound)
{
_logger.LogDebug(notFound, "Invoke - NotFoundException.");
await context.Response.WriteAsync(ChangeResponseMiddleware(context, notFound, HttpStatusCode.NotFound));
}
... // Another catches
catch (AmbiguousActionException aaex)
{
_logger.LogDebug(aaex, "Invoke - AmbiguousActionException.");
await context.Response.WriteAsync(ChangeResponseMiddleware(context, aaex, HttpStatusCode.NotFound));
}
catch (Exception ex)
{
_logger.LogCritical(ex, "Invoke - Exception: " + ex.Message);
await context.Response.WriteAsync(ChangeResponseMiddleware(context, ex, HttpStatusCode.InternalServerError));
}
}
Как видите, у нас есть ссылка на AmbiguousActionException. Этот код вызывает следующее исключение во время выполнения
System.TypeLoadException: Could not load type 'Microsoft.AspNetCore.Mvc.Internal.AmbiguousActionException' from assembly 'Microsoft.AspNetCore.Mvc.Core, Version=3.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
И файл проекта содержит ссылку на Microsoft.AspNetCore. Mvc .Core 2.2.5
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<Version>2.0.0.0-beta</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.1" />
</ItemGroup>
</Project>
Помогите мне, пожалуйста :)