1

我正在开发一个旧的 Windows 8 应用程序,该应用程序使用 Windows 中的 ContentIndexer 为应用程序中的搜索引擎构建索引。在我将计算机更新到最后一个创作者更新之前,它运行良好。调用 AddAsync 函数时出现异常:

var indexer = Windows.Storage.Search.ContentIndexer.GetIndexer();
await indexer.AddAsync(content);

异常是:HRESULT 异常:0x80040DB4

内部异常是 null :(

有关信息,仅当我在具有 Creators 更新的计算机上部署我的应用程序时才会引发异常。它仍然可以在 Windows 8 和 Windows 10 上使用以前的更新。

我还尝试创建一个空白的 Windows 10 UWP 应用程序以查看 ContentIndexer 是否正常工作,但它也失败了。

你有什么想法解决这个问题吗?

谢谢

4

1 回答 1

0

有关信息,仅当我在具有 Creators 更新的计算机上部署我的应用程序时才会引发异常。它仍然可以在 Windows 8 和 Windows 10 上使用以前的更新。

问题是Stream内容的属性不可用。奇怪的是,如果你不设置StreamStreamContentType属性,它会起作用!我会将此问题报告给相关团队。目前,将内容添加到索引器的一种解决方法是您可以使用IndexableContent.

public async static Task<string> AddAppContentFilesToIndexedFolder()
{
    var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var installDirectory = Windows.ApplicationModel.Package.Current.InstalledLocation;
    var outputString = "Items added to the \"Indexed\" folder:";
    var appContentFolder = await installDirectory.GetFolderAsync("appcontent-ms");
    var indexedFolder = await localFolder.CreateFolderAsync("Indexed", Windows.Storage.CreationCollisionOption.OpenIfExists);
    var files = await appContentFolder.GetFilesAsync();
    foreach (var file in files)
    {
        outputString += "\n" + file.DisplayName + file.FileType;
        await file.CopyAsync(indexedFolder, file.Name, Windows.Storage.NameCollisionOption.ReplaceExisting);
    }
    return outputString;
}

有关更多信息,您可以参考官方代码示例并选择Add app content files to be indexed场景。

于 2017-08-25T03:20:54.873 回答