从.netcore 2.2移动到3.1后无法上载文件



我有一个为上传文件而构建的服务。有两个程序集:一个带有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第2.2.2版和Microsoft.AspNetCore.Http.Features 2.2.0(我尝试过3.1.2,但行为相同(

这两个项目都是用.net内核3.1构建的。当前安装的版本是3.1.102。

A可以与控制器上的调试器中断,但当我试图进入业务逻辑时,我会收到以下消息:

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'.'

我花了一天的时间来解决这个问题。而且不知道如何让它发挥作用。

原因可能是什么?我该如何解决?

以下是解决方案:https://learn.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visualstudio#框架参考

似乎应该手动修复。

最新更新