c# - 为什么我无法上传到 Blob?

标签 c# .net azure-blob-storage

我正在尝试将数据上传到本地 Blob 容器中的 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 存储资源管理器手动上传具有相同名称和内容的文件成功。

谁知道我为什么会收到此错误以及如何解决它?

最佳答案

我正在使用重载

UploadAsync(string path)

它需要路径,而不是内容。将我的声明更改为

UploadAsync(new BinaryData(json)) 

修复它。

(感谢用户 NotFound 指出了这一点。)

关于c# - 为什么我无法上传到 Blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75769026/

相关文章:

c# - 如何将 List<T> 序列化为 XML?

c# - MySQL 连接器 v.6.3.6 .NET 中 GUID 类型的问题

asp.net - WinForms 和 Asp 类库中的异常处理

azure - 如何检查CloudBlobDirectory是否存在?

Azure Rest Api 列表容器 : Parameter Marker

c# - 使用 UML 类图的组合和聚合示例

c# - 使 c# 函数成为非私有(private)函数,将其标记为最终函数,或密封其声明类型

c# - 排序时ASP.net gridview数据源为空

python - 使用共享 key 授权向 Azure 存储发出 PUT 请求

c# - 在类中映射相同对象类型的属性会调用 Equals 和 GetHashCode