You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

注册AutofacServiceProviderFactory后Blazor InputFile组件无法上传文件

解决AutofacServiceProviderFactory注册后Blazor InputFile无法上传的问题

当你在Blazor项目中注册AutofacServiceProviderFactory替换默认DI容器后,InputFile组件无法完成上传,核心原因是Blazor InputFile依赖的内部服务IInputFileUploadedFileStore没有被Autofac正确注册——默认DI会自动注册该服务,但Autofac不会自动继承这些内部服务的注册。

修复步骤

  1. 在Autofac容器配置中手动注册InputFile所需服务
    修改Program.cs,添加Autofac容器的配置代码,手动注册IInputFileUploadedFileStore及其实现类:

    builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
    // 添加Autofac容器配置
    builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder =>
    {
        // 注册InputFile依赖的内部存储服务
        containerBuilder.RegisterType<InputFileUploadedFileStore>()
                       .As<IInputFileUploadedFileStore>()
                       .InstancePerLifetimeScope();
        
        // 这里可以添加你的其他Autofac注册逻辑
    });
    
  2. 修正示例代码中的类型错误
    你的示例代码中loadedFiles的类型声明不完整,会导致编译错误,需要指定泛型类型:

    // 原错误代码
    // private List loadedFiles = new();
    // 修正为
    private List<IBrowserFile> loadedFiles = new();
    
  3. 权限与路径检查
    确保程序有写入目标目录的权限,避免因权限不足导致文件写入失败。可以改为写入项目目录下的专属上传文件夹,示例:

    var uploadDir = Path.Combine(Directory.GetCurrentDirectory(), "Uploads");
    Directory.CreateDirectory(uploadDir);
    var path = Path.Combine(uploadDir, file.Name);
    

验证

完成上述修改后,重新运行项目,选择文件上传,即可正常完成文件写入操作。

内容的提问来源于stack exchange,提问作者Moha_ganesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:47:54