聚合异常 Asp.Net Core 5.0

Aggregate Exception Asp.Net Core 5.0

我有一个基于 Asp.Net Core 5.0 的 Mvc 项目。我有自己的 Core Layer 并且我有自己的照片、视频上传器方法,该方法基于我的 FileRepo class。 这是我的 FileModel class:

    public class FileModel
    {
        public int FileID { get; set; }
        public string FileName { get; set; }
        public string FileType { get; set; }
        public string FileExtension { get; set; }
        public string FileSlug { get; set; }
        public string FilePath { get; set; }
        public byte[] Data { get; set; }
    }

这是我的文件上传方法:

public interface IFileUploader
    {
        Task<FileModel> FileUploadToDatabase(List<IFormFile> files);
        Task<FileModel> FileUploadToPath(List<IFormFile> files);
        Task<bool> FileDeleteFromPath(int id);
    }
 public class FileUploader : IFileUploader
    {
        private FileModel _fileModel;

        public FileUploader(FileModel fileModel)
        {
            _fileModel = fileModel;
        }
        public async Task<FileModel> FileUploadToDatabase(List<IFormFile> files)
        {
            foreach (var file in files)
            {
                var fileName = Path.GetFileNameWithoutExtension(file.FileName);
                var extension = Path.GetExtension(file.FileName);
                _fileModel = new FileModel
                {
                    FileName = fileName,
                    FileType = file.ContentType
                };
                using (var dataStream = new MemoryStream())
                {
                    await file.CopyToAsync(dataStream);
                    _fileModel.Data = dataStream.ToArray();
                }
            }
            return _fileModel;
        }

        public async Task<FileModel> FileUploadToPath(List<IFormFile> files)
        {
            foreach (var file in files)
            {
                var basePath = Path.Combine(Directory.GetCurrentDirectory() + "\Files\");
                bool basePathExists = Directory.Exists(basePath);
                if (!basePathExists) Directory.CreateDirectory(basePath);
                var fileName = Path.GetFileNameWithoutExtension(file.FileName);
                var filePath = Path.Combine(basePath, file.FileName);
                var extension = Path.GetExtension(file.FileName);
                if (!File.Exists(filePath))
                {
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }
                    _fileModel = new FileModel
                    {
                        FileName = fileName,
                        FileType = file.ContentType,
                        FilePath = filePath
                    };
                }
            }
            return _fileModel;
        }
    }

如你们所见,它是一个不同的层,与我的 Mvc 项目没有任何关系。 当我将这些扩展添加到我的 Mvc 项目时出现错误。 错误告诉我:

'Some services are not able to be constructed (Error while validating the service descriptor 
'ServiceType: CORE_HBKSOFTWARE.Interfaces.IFileUploader Lifetime: Singleton ImplementationType: 
CORE_HBKSOFTWARE.Classes.FileUploader': Unable to resolve service for type 
'CORE_HBKSOFTWARE.Models.FileModel' while attempting to activate 
'CORE_HBKSOFTWARE.Classes.FileUploader'.)'

我不知道为什么我会收到那个错误。 FileModel class 对我来说似乎没问题,但我仍然不知道。我已经将我的 services.AddSingleton<IFileUploader, FileUploader>(); 添加到我的 Startup.cs .

感谢任何建议!

如果您想使用构造函数注入在您的 FileUploader class 中创建 FileModel 实例,您需要将其注册到 IoC 容器。您可以通过在 ConfigureServices 方法中调用以下方法来做到这一点:

services.AddSingleton<FileModel>();

您还可以通过调用 AddScoped 或 AddTransient 选择不同的生命周期。