Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件读入字节数组时System.ArgumentException_C#_Wpf_Windows Phone 8 - Fatal编程技术网

C# 将文件读入字节数组时System.ArgumentException

C# 将文件读入字节数组时System.ArgumentException,c#,wpf,windows-phone-8,C#,Wpf,Windows Phone 8,要使用ByteArrayContent为HttpClient上载文件,我正在将StorageFile读取到字节数组中。代码在图像方面没有问题,但对于通过AudioVideoCaptureDevice生成的文件,它不起作用-即使通过我仔细检查的文件不是空的*它将以任何方式访问文件: 这是个例外 could not read file: System.ArgumentException: Value does not fall within the expected range. at Sys

要使用
ByteArrayContent
HttpClient
上载文件,我正在将
StorageFile
读取到
字节
数组中。代码在图像方面没有问题,但对于通过
AudioVideoCaptureDevice
生成的文件,它不起作用-即使通过我仔细检查的文件不是空的*它将以任何方式访问文件:

这是个例外

could not read file: System.ArgumentException: Value does not fall within the expected range.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at TestApp.Models.Item.<Upload>d__1f.MoveNext()
在一些用户交互之后,我正在打电话

await dev.StopRecordingAsync();
Debug.WriteLine("stopped recording");
await stream.FlushAsync();
stream.Dispose();
有什么建议可以解释为什么有些文件有效,有些文件无效

谢谢

更新添加了用于创建文件和文件夹源的代码


UPDATE2为周围的try-catch读取文件大小添加了代码

问题是由于声音文件的文件名错误。我保存了绝对路径,而不仅仅是上面代码中使用的文件名


谢谢每一个试图帮助你的人

文件是否确实已关闭?在本例中,stream.size的大小是多少?它似乎与wait方法的使用和编译器生成的代码有关。尝试以递增的方式向其输入更大的文件,以查看它是否在达到一定大小后被切断。你有行号吗?可能有助于让事情更清楚一些,因为到目前为止,消息似乎主要是编译器生成的函数。尝试捕获异常并打印其所有详细信息。如何获取
文件夹
?@oren使用块中的Debug.WriteLine永远不会被删除called@den,我添加了文件夹行
IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;
var dataFolder = await applicationFolder.CreateFolderAsync("data", CreationCollisionOption.OpenIfExists);
outputFile = await dataFolder.CreateFileAsync(audioFileName, CreationCollisionOption.ReplaceExisting);
stream = await outputFile.OpenAsync(FileAccessMode.ReadWrite);
await dev.StartRecordingToStreamAsync(stream);
await dev.StopRecordingAsync();
Debug.WriteLine("stopped recording");
await stream.FlushAsync();
stream.Dispose();