【发布时间】:2014-08-05 10:16:17
【问题描述】:
我有一个非常简单的服务,
public class AzureService : IAzureService
{
private readonly CloudBlobContainer _container;
public AzureService(ISettings settings)
{
var storageAccount = CloudStorageAccount.Parse(settings.BlobConnectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
_container = blobClient.GetContainerReference(settings.BlobContainerName);
}
public Task UploadBlobAsync(string fileName, Stream stream)
{
var blob = _container.GetBlockBlobReference(fileName);
return blob.UploadFromStreamAsync(stream);
}
public Task DeleteBlobAsync(string fileName)
{
var blob = _container.GetBlockBlobReference(fileName);
return blob.DeleteAsync();
}
}
这个方法被调用,
public Task SaveAllAsync(Dictionary<string, Stream> images)
{
var tasks = new List<Task>();
foreach (var image in images)
{
var fileName = image.Key;
var stream = image.Value;
var task = _azureService.UploadBlobAsync(fileName, stream);
tasks.Add(task);
}
return Task.WhenAll(tasks);
}
我的信息流是HttpPostedFileBase.InputStream。有时它有效,有时我得到The remote server returned an error: (400) Bad Request.。如果我设置一个断点,它也可以工作。
【问题讨论】:
-
400 绝对是服务器错误,表示客户端发送了错误的请求。尝试使用 Fiddler 查看好请求和坏请求之间的区别。
-
@PauloMorgado,如果我
await UploadFromStreamAsync那么它会工作 -
等待
UploadFromStreamAsync应该没有任何效果。你用 Fiddler 检查过 HTTP 内容吗? -
信息不足。错误请求何时发生?某些时候?随机?在特定时间后?你发现异常了吗?如果是这样,您会看到任何内部消息。您是否通过提琴手查看过,所以您的请求始终有效?您的服务器可以同时进行多次上传吗?
-
@user960567 你能显示调用
SaveAllAsync的方法吗?
标签: asp.net-mvc azure async-await azure-blob-storage c#-5.0