当我尝试将 blob 上传到我的网站时,收到错误消息“指定的资源名称长度不在允许的范围内”Azure Storage Account
.
下面是我的代码。
private async Task UploadToAzureBlobStorage(string path, string fileName) {
try {
if (CloudStorageAccount.TryParse(StorageConnectionString, out CloudStorageAccount cloudStorageAccount)) {
var cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
var cloudBlobContainer = cloudBlobClient.GetContainerReference(path);
var cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(fileName);
await cloudBlockBlob.UploadFromFileAsync(path);
}
else {
throw new CustomConfigurationException(CustomConstants.NoStorageConnectionStringSettings);
}
}
catch(Exception ex) {
throw new CustomConfigurationException($ "Error when uploading to blob: {ex.Message}");
}
}
其他人也遇到过同样的问题吗?
有时错误消息可能会产生误导。当我调用时,我收到此错误await cloudBlockBlob.UploadFromFileAsync(path);
这个问题背后的原因是,我向函数提供了无效的参数cloudBlobClient.GetContainerReference(path);
发生这种情况是因为最近的开发发生了变化。我一直专注于fileName
中的参数GetBlockBlobReference
函数,因为我认为问题出在 blob 名称上。
不幸的是我错了真正的问题是blob container name
其中有一些特殊字符,所以我引入了一个新参数schedule
到现有函数,该参数的值可以是每日、每周、每月,这些是我在 Azure Blob 存储中配置的容器的名称。
private async Task UploadToAzureBlobStorage(string schedule, string path, string fileName) {
try {
if (CloudStorageAccount.TryParse(StorageConnectionString, out CloudStorageAccount cloudStorageAccount)) {
var cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
var cloudBlobContainer = cloudBlobClient.GetContainerReference(schedule);
var cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(fileName);
await cloudBlockBlob.UploadFromFileAsync(path);
}
else {
throw new CustomConfigurationException(CustomConstants.NoStorageConnectionStringSettings);
}
}
catch(Exception ex) {
throw new CustomConfigurationException($ "Error when uploading to blob: {ex.Message}");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)