Azure 저장소 오류 : "지정한 BLOB가 이미 있습니다",하지만 그렇지 않습니다!
CloudBlob blob = _container.GetBlobReference(relativefilePath);
blob.Properties.ContentType = contentType;
blob.UploadFromStream(fileContent);
개발 저장소에 큰 파일 (150Mb)을 업로드하면 다음 예외가 발생합니다.
Microsoft.WindowsAzure.StorageClient.StorageClientException 이 사용자에 의해 처리되지 않았습니다. code
Message = 지정된 BLOB가 이미 존재합니다.
Source = Microsoft.WindowsAzure.StorageClient
그러나 사실이 아니므로 파일이 존재하지 않습니다. 사실, 그게 왜 문제가되어야할지 모르겠다. 시도 할 때마다, 나는 문제가없는 기존 BLOB를 덮어 쓸 수있다. 가장 놀라운 점은 예외가 VS에 나타날 때 "편집 사용"을 선택하고 코드의 두 번째 줄에 실행 커서 (노란색 화살표)를 옮겨 실행하고 실행하면됩니다!
큰 파일에서만 예외가 발생하며 그 이유는 알 수 없습니다.
이것은 예외적 인 세부 사항입니다.
Microsoft.WindowsAzure.StorageClient.StorageClientException was unhandled by user code
Message=The specified blob already exists.
Source=Microsoft.WindowsAzure.StorageClient
StackTrace:
at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
at Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImpl(Func`1 impl)
at Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(Stream source, BlobRequestOptions options)
at Microsoft.WindowsAzure.StorageClient.CloudBlob.UploadFromStream(Stream source)
at AzureBlobOperations.AzureFileContainerOperations.PutFile(String relativefilePath, Stream fileContent, String contentType, Boolean createIfNotExists) in C:\Users\valeriano.tortola\Documents\Visual Studio 2010\Projects\TestWithBlobs\AzureBlobOperations\AzureFileOperations.cs:line 61
at TestWithBlobs.Web.Controllers.HomeController.PostFile(HttpPostedFileBase fileUpload) in C:\Users\valeriano.tortola\Documents\Visual Studio 2010\Projects\TestWithBlobs\TestWithBlobs.Web\Controllers\HomeController.cs:line 31
at lambda_method(Closure , ControllerBase , Object[])
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
InnerException: System.Net.WebException
Message=The remote server returned an error: (409) Conflict.
Source=System
StackTrace:
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at Microsoft.WindowsAzure.StorageClient.EventHelper.ProcessWebResponse(WebRequest req, IAsyncResult asyncResult, EventHandler`1 handler, Object sender)
InnerException:
덕분에, 그렇지? – vtortola
사실입니다. "Commit Block List"작업을 명시 적으로 호출 할 때까지 BLOB가 커밋되지 않기 때문에 클라우드에서는 발생하지 않습니다. –