Невозможно загрузить файл после перехода с .netcore 2.2 на 3.1 - PullRequest
1 голос
/ 28 февраля 2020

У меня есть сервис для загрузки файлов. Есть 2 сборки: одна с ApiController, а другая с логикой.

Контроллер:

public async Task<UploadFileResponse> UploadFromUrl([Required] string url, [FromQuery] string policy = null)
{
    return await _fileStorageService.UploadFromUrlAsync(url, policy);
} 

И бизнес:

public abstract class BaseFileStorageService<TOptions> : IFileStorageService
{
...
    public async Task<UploadFileResponse> UploadFromUrlAsync(string url, string policyName = null, CancellationToken cancellationToken = default) {
        var fileName = Path.GetFileName(uri.LocalPath);

        ... //http request for the file

        var fileDataStream = await downloadResponse.Content.ReadAsStreamAsync();
        if (contentLength == null)
            throw new Exception("File upload error");

        var formFile = new FormFile(fileDataStream, 0, contentLength.Value, null, fileName)
        {
            Headers = new HeaderDictionary(),
            ContentType = contentType
        };
    }
}

Я добавил следующие пакеты:

Microsoft.AspNetCore.Http v.2.2.2 и Microsoft.AspNetCore.Http.Features 2.2.0 (я пробовал 3.1.2, но поведение такое же)

Оба проекта построены с использованием. net core 3.1. В настоящее время установлена ​​версия 3.1.102.

A может порвать с отладчиком на контроллере, но когда я пытаюсь попасть в бизнес-логи c, я получаю следующее сообщение:

System.TypeLoadException: 'Could not load type 'Microsoft.AspNetCore.Http.Internal.FormFile' from assembly 'Microsoft.AspNetCore.Http, Version=3.1.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.'

Я провел целый день, борясь с проблемой. И понятия не имею, как заставить это работать.

В чем может быть причина и как я могу это исправить?

1 Ответ

1 голос
/ 03 марта 2020

Вот решение: https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#framework -референция

Похоже, что это должно быть исправлено вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...