我在为我的 Orchard 站点列出 Media 目录中的图像时遇到问题。尝试使用新媒体选择器添加图像时,我看到文件夹列表,但是当我选择一个时,内容未列出(见下图)。
如果我“导入”一个图像,它确实会出现,但我肯定不需要每次都导入我将要使用的每个文件,不是吗?
我一定是唯一一个遇到这个问题的人,因为我在网络上的任何其他地方都找不到任何参考,所以提前致谢。
PS。抱歉,如果我的问题没有完全形成 - 这是我第一次发帖....
我在为我的 Orchard 站点列出 Media 目录中的图像时遇到问题。尝试使用新媒体选择器添加图像时,我看到文件夹列表,但是当我选择一个时,内容未列出(见下图)。
如果我“导入”一个图像,它确实会出现,但我肯定不需要每次都导入我将要使用的每个文件,不是吗?
我一定是唯一一个遇到这个问题的人,因为我在网络上的任何其他地方都找不到任何参考,所以提前致谢。
PS。抱歉,如果我的问题没有完全形成 - 这是我第一次发帖....
启用更新功能并将您的媒体从那里迁移到媒体库。这是一个一次性的过程,之后您可以将媒体库与所有旧媒体一起使用。
好的,我也遇到了这个问题,刚刚解决了。根本问题是果园数据库中的媒体文件记录已不复存在。这是因为我们刚刚将项目更改为使用 Azure 存储,而数据库仍然指向我们本地硬盘驱动器其他区域中的图像。(Orchard 在尝试获取其公共 URL 时正在使用一种方法来检查 blob 是否确实存在,如果不存在,则会引发异常。)
我做了两件事来修复它。首先,我从数据库中删除了所有对旧图像的引用。orchard 数据库中的表 [Orchard_MediaLibrary_MediaPartRecord] 包含所有文件名。您可以在那里查看是否有对您知道不存在的文件的任何引用。
其次,由于有多个开发人员在开发我们的 CMS,但使用的是中央数据库,所以我担心它会在我们将图像添加到本地 azure 文件系统时再次损坏。我最终进入 AzureFileSystem.cs 文件并修改它以返回一个空白字符串,而不是在找不到 blob 时抛出异常:
我将第 297 和 298 行更改为:
try
{
Container.EnsureBlobExists(String.Concat(_root, path));
return Container.GetBlockBlobReference(String.Concat(_root, path)).Uri.ToString();
}
catch
{
return "";
}
现在,即使它找不到图像,它仍然会显示它可以找到的图像。
希望这可以帮助。你可能没有通过 Azure 运行东西,但你仍然可以从数据库中删除不需要的条目。