我按照此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