我正在尝试让一个按钮为我的用户启动从Blob存储中的下载。但是,单击该按钮后,下载将永远不会开始,它会挂在加载面板上。请参阅下面的回调事件。 'Blob'类型只是.net中所有正常的Azure Blob函数的代码库中的某些包装器类。逐步处理事件时,一切似乎都在事件中正常运行,因为使用正确的文件正确构建了HTTP响应,所以我认为这可能是生命周期问题?但是我仍然可以理解为什么会这样吗?请帮助我!
protected void DownloadFile_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
{
var blobStorageId = gDownloads.GetRowValues(e.VisibleIndex, "BlobStorageId");
var azureConnectionString = ConfigurationManager.ConnectionStrings("AzureStorageConnectionString").ConnectionString;
Blob bs = new Blob(azureConnectionString, kStorageContainer, kStorageFolder);
var blobItem = bs.DownloadAnyExtension(blobStorageId.ToString).FirstOrDefault();
MemoryStream ms = new MemoryStream();
blobItem.DownloadToStream(ms);
var resultStream = ms.ToArray();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = blobItem.ContentType;
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + blobItem.FileName.ToString);
HttpContext.Current.Response.AddHeader("content-length", blobItem.GetLength.ToString);
HttpContext.Current.Response.BinaryWrite(resultStream);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
ms.Close();
RefreshGrid();
}