Serialization 无法在WinRT单元测试中打开文件
我正在编写一个单元测试来验证对象的序列化,并且我能够成功地保存文件而不会出现任何问题。我甚至可以浏览文件并验证内容是否正确。但是,当我试图打开文件进行读取时,总是会收到UnauthorizedAccess异常 以下是用于保存项目的代码:Serialization 无法在WinRT单元测试中打开文件,serialization,windows-runtime,storagefile,Serialization,Windows Runtime,Storagefile,我正在编写一个单元测试来验证对象的序列化,并且我能够成功地保存文件而不会出现任何问题。我甚至可以浏览文件并验证内容是否正确。但是,当我试图打开文件进行读取时,总是会收到UnauthorizedAccess异常 以下是用于保存项目的代码: public static async Task SaveItem<T>(string folderName, T item) where T : BaseBusinessItem { if (
public static async Task SaveItem<T>(string folderName, T item)
where T : BaseBusinessItem
{
if (string.IsNullOrEmpty(folderName))
{
throw new ArgumentNullException("folderName");
}
if (item == null)
{
throw new ArgumentNullException("item");
}
try
{
var folder = await ApplicationData.Current.LocalFolder
.CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists);
var file =
await
folder.CreateFileAsync(item.UniqueID.GetHashCode().ToString(), CreationCollisionOption.ReplaceExisting);
var stream = await file.OpenAsync(FileAccessMode.ReadWrite);
using (var outStream = stream.GetOutputStreamAt(0))
{
var serializer = new DataContractJsonSerializer(typeof(T));
serializer.WriteObject(outStream.AsStreamForWrite(), item);
await outStream.FlushAsync();
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
public static async Task<T> RestoreItem<T>(string folderName, string hashCode)
where T : BaseBusinessItem, new()
{
if (string.IsNullOrEmpty(folderName))
{
throw new ArgumentNullException("folderName");
}
if (string.IsNullOrEmpty(hashCode))
{
throw new ArgumentNullException("hashCode");
}
var folder = await ApplicationData.Current.LocalFolder.GetFolderAsync(folderName);
var file = await folder.GetFileAsync(hashCode);
var inStream = await file.OpenSequentialReadAsync();
var serializer = new DataContractJsonSerializer(typeof(T));
var retVal = (T)serializer.ReadObject(inStream.AsStreamForRead());
return retVal;
}
我可能缺少的任何想法或故障排除步骤。单元测试应用程序清单包括以下功能:文档库、Internet(客户端)。以下声明已就位:文件打开选择器、文件保存选择器和文件类型关联
谢谢 这个代码片段帮助我实现了我的目标。希望这对其他人有帮助:
它总是在以var inStream=file.OpenSequentialReadAsync()开头的行上失败;
[TestMethod]
public async Task TestFileSaveLoad()
{
await _ds.SaveItem("TestFolder");
Guid ID = _item.UniqueID;
_ds = await ItemDataSource.LoadItem("TestFolder", ID.GetHashCode().ToString());
}