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

无法将XML内容保存至Azure Blob,代码执行无效果

问题排查与修正方案

你代码里有几个关键错误导致Blob文件未生成,逐个修正即可:

1. 容器名称参数错误

containerName应该只用容器的纯名称(比如"container_name"),而不是完整的Blob容器URL。因为BlobServiceClient已经通过连接字符串关联了存储账户,GetBlobContainerClient只需要容器名即可。

2. Blob路径拼接错误

创建BlobClient时,不需要拼接containerName——containerClient已经指向目标容器,直接传入Blob的相对路径即可。另外原FileName开头的斜杠/可以去掉,避免路径冗余。

3. MemoryStream位置未重置

用MemoryStream上传时,写入数据后流的Position会停在末尾,必须重置到起始位置(Position = 0),否则上传的是空内容。

4. 确保异步调用正确等待

调用Await blobClient.UploadAsync的方法必须标记为Async,否则异步操作可能还没完成就提前结束了。

修正后的完整代码(内存流上传)

Dim connectionString As String = "Azure_Connection_String"
' 只保留容器纯名称
Dim containerName As String = "container_name"
' 直接用Blob相对路径,去掉开头斜杠
Dim blobPath As String = "site/business/data.xml"

Dim blobServiceClient As BlobServiceClient = New BlobServiceClient(connectionString)
Dim containerClient As BlobContainerClient = blobServiceClient.GetBlobContainerClient(containerName)
containerClient.CreateIfNotExists()
containerClient.SetAccessPolicy(PublicAccessType.BlobContainer)

' 直接传入Blob相对路径创建客户端
Dim blobClient As BlobClient = containerClient.GetBlobClient(blobPath)

' 处理MemoryStream,重置位置到起始点
Dim memStream As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(data))
memStream.Position = 0 ' 关键:必须重置流位置
Await blobClient.UploadAsync(memStream, overwrite:=True) ' 开启覆盖,避免重复上传报错

本地文件上传的修正版本

如果用本地文件流上传,同样要确保Blob路径正确:

Dim connectionString As String = "Azure_Connection_String"
Dim containerName As String = "container_name"
Dim blobPath As String = "site/business/data.xml"

Dim blobServiceClient As BlobServiceClient = New BlobServiceClient(connectionString)
Dim containerClient As BlobContainerClient = blobServiceClient.GetBlobContainerClient(containerName)
containerClient.CreateIfNotExists()

Dim blobClient As BlobClient = containerClient.GetBlobClient(blobPath)
Using uploadFileStream = New IO.FileStream(path, IO.FileMode.Open, IO.FileAccess.Read)
     Await blobClient.UploadAsync(uploadFileStream, overwrite:=True)
End Using

修正后执行代码,就能在容器中看到site/business/data.xml路径的文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:23:11