我按照此tutorial從Azure Blob存儲上傳/下載Blob。下面「索引超出範圍」等待時發生錯誤Request.Content.ReadAsMultipartAsync(provider)
代碼工作完美,直到我實現了承載令牌認證(OAuth的)
我已經上載從postman.The任何文件得到了錯誤的錯誤描述。
{ 「消息」:「發生了錯誤的細節:。索引超出範圍必須大於 集合的大小非負少\ r \ n參數名稱索引:」}
但是,這些文件已成功上傳到我的Blob帳戶中,但仍然出現錯誤。
我附上了調試時獲得的錯誤詳細信息的圖像。
在那裏我已經提示錯誤在我上傳控制器
try
{
await Request.Content.ReadAsMultipartAsync(provider);
}
catch (Exception ex)
{
return BadRequest($"An error has occured. Details: {ex.Message}");
}
我AzureStorageMultipartFormDataStreamProvider類,這是從MultipartFormDataStreamProvider
public override Stream GetStream(HttpContent parent, HttpContentHeaders headers)
{
if (parent == null) throw new ArgumentNullException(nameof(parent));
if (headers == null) throw new ArgumentNullException(nameof(headers));
// Generate a new filename for every new blob
var fileName = Guid.NewGuid().ToString();
CloudBlockBlob blob = _blobContainer.GetBlockBlobReference(fileName);
headers.ContentLength = 0;
if (headers.ContentType != null)
{
// Set appropriate content type for your uploaded file
blob.Properties.ContentType = headers.ContentType.MediaType;
}
this.FileData.Add(new MultipartFileData(headers, blob.Name));
return blob.OpenWrite();
}
繼承對於實施的oauth2區域。 0身份驗證我剛剛在我的項目中添加了啓動.cs和Startup.Auth.cs(使用re quired的NuGet包Owin)
這裏是我的堆棧跟蹤
在System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument說法,ExceptionResource資源)在System.Collections.Generic.List
1.get_Item(Int32 index) at System.Net.Http.MultipartFormDataStreamProvider.<ExecutePostProcessingAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpContentMultipartExtensions.<ReadAsMultipartAsync>d__0
1.MoveNext() - - 從拋出異常的以前位置結束堆棧跟蹤---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務任務)上System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務)在System.Runtime.CompilerServices .TaskAwaiter`1.GetResult() 在DemoAzureStorage.Controllers.UploadController.d__1.MoveNext()
共享調用堆棧/堆棧跟蹤。 – rene
@rene更新了堆棧跟蹤 – Jayendran