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

无法上传数据至本地Blob容器,报System.IO.Exception错误求助

问题描述

尝试将数据上传至本地Blob容器时触发System.IO.Exception异常,错误信息如下:

The filename, directory name, or volume label syntax is incorrect. : 'C:\repos{repository-name}{solution-name}{project-name}\bin\Debug\net6.0

后续附带了要上传的数据。

使用的代码如下:

public async Task UploadData(Data data, string currentSequenceNumber)
{
    // The blob container exists
    bool exists = await BlobContainerClient.ExistsAsync();
    // the blobname is 20230317142352_923.json
    string blobName = $"{dateTimeProvider.NowUtc:yyyyMMddHHmmss}_{currentSequenceNumber.PadLeft(3, '0')}.json"; 
    BlobClient blobClient = BlobContainerClient
        .GetBlobClient(blobName);
    // This serialises the data as a string with length 13770
    string json = JsonConvert.SerializeObject(tennetResponse, Formatting.Indented);
    // This throws the exception
    await blobClient.UploadAsync(json);
}

Blob的绝对URI为http://127.0.0.1:10000/devstoreaccount1/storage/data_20230317142352_923.json。

曾尝试修改上传语句为:

await blobClient.UploadAsync(data, new BlobUploadOptions
{
    HttpHeaders = new BlobHttpHeaders()
    {
        ContentType = MediaTypeNames.Application.Json
    }
});

但问题依旧。通过Microsoft Azure Storage Explorer手动上传同名同内容的文件可成功。

请问该错误的原因是什么,该如何解决?


原因分析与解决方案

核心原因

这个异常的根源是**BlobContainerClient未正确指向Azurite的Blob服务端点**,而是错误地被配置为操作本地文件系统,导致SDK尝试将数据写入本地目录,从而触发文件路径语法错误。

解决步骤

  1. 修正BlobContainerClient初始化逻辑
    必须使用Azurite的专属连接字符串创建BlobContainerClient,而非本地文件路径。标准的Azurite连接字符串如下:

    DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
    

    初始化示例:

    string azuriteConnectionString = "上述连接字符串";
    BlobContainerClient blobContainerClient = new BlobContainerClient(azuriteConnectionString, "storage");
    
  2. 确认Azurite服务运行状态
    确保Azurite已启动,且Blob服务监听默认端口10000。可通过Azure Storage Explorer连接Azurite,验证storage容器是否正常可访问。

  3. 修正代码变量错误
    代码中序列化时使用的tennetResponse与方法参数data不匹配,建议修正为JsonConvert.SerializeObject(data, Formatting.Indented),避免后续出现数据序列化错误。

  4. 排除Blob名称问题
    你的Blob名称20230317142352_923.json符合Azure Blob命名规范,手动上传成功也验证了这一点,无需调整名称格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:42:24