azure – Request.Content.ReadAsMultipartAsync引发System.IO异
发布时间:2020-12-16 03:16:29 所属栏目:asp.Net 来源:网络整理
导读:我正在将图像上传到ASP WebAPI服务,然后将其上传到 windows azure.一切都很好但突然间我开始得到以下异常: System.IO.IOException: The process cannot access the file 'C:DWASFilesSitesTasteatTempBodyPart_a5c79910-6077-4c24-b814-10fdc0e0b3d4'
我正在将图像上传到ASP WebAPI服务,然后将其上传到
windows azure.一切都很好但突然间我开始得到以下异常:
System.IO.IOException: The process cannot access the file 'C:DWASFilesSitesTasteatTempBodyPart_a5c79910-6077-4c24-b814-10fdc0e0b3d4' because it is being used by another process. 这是抛出异常的代码: var provider = new BlobStorageProvider(container); Trace.TraceInformation("Uploading raw image to blob"); await Request.Content.ReadAsMultipartAsync(provider); Trace.TraceInformation("Uploading finished"); 我知道它的这一行等待Request.Content.ReadAsMultipartAsync(provider);因为我在日志中看到它前面的行而不是它后面的行. 有任何想法吗? 一切都很好,直到几天 解决方法
因此,我上面发布的代码似乎实际上保存了一个本地文件,然后才将其上传到服务器,这会导致错误,但也很慢.
经过大量的尝试后,我终于改为以下解决方案,一切都开始工作,甚至更快! 首先创建一个streamprovider: public class BlobStorageMultipartStreamProvider : MultipartStreamProvider { private readonly string _containerName; private readonly string _fileName; public BlobStorageMultipartStreamProvider(string containerName,string fileName) { _containerName = containerName; _fileName = fileName; } public override Stream GetStream(HttpContent parent,HttpContentHeaders headers) { Stream stream = null; if (!String.IsNullOrWhiteSpace(_fileName)) { string connectionString = ConfigurationManager.ConnectionStrings["BlobStorage"].ConnectionString; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer blobContainer = blobClient.GetContainerReference(_containerName); CloudBlockBlob blob = blobContainer.GetBlockBlobReference(_fileName); stream = blob.OpenWrite(); } return stream; } } 上传代码: string fileName = Guid.NewGuid()+".Png"; MultipartStreamProvider provider = new BlobStorageMultipartStreamProvider("container",fileName); Trace.TraceInformation("Uploading raw image to blob"); await Request.Content.ReadAsMultipartAsync(provider); Trace.TraceInformation("Uploading finished"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.Net MVC授权操作过滤器
- asp.net – 如何将Session从一个应用程序传递到另一个应用程
- Asp.Net Core 2.0 多角色权限认证
- ASP.NET MVC3模型验证DataAnnotations使用客户端验证执行小
- Asp.net Webservice – 使用jquery AJAX安全地调用webservi
- asp.net – 404处理程序获取“句柄未初始化”异常
- asp.net – 用于解析csv的正则表达式
- asp.net-mvc – 如何将表单中的复选框序列化为Json数据
- asp.net-mvc – 用于子操作的MVC OutputCache:它存储在哪里
- asp.net – 为什么要模拟HttpContext,如果它可以构造?