嘿伙计们使用visual studio 2012,C#/ net 4.5,Umbraco 7.1.4。
媒体文件夹出现问题。
我通过CMS删除了媒体文件夹中的图像和文件夹。
然而,当我这样做时,内容页面仍在尝试查找和使用这些图像。
所以我从所有媒体选择器中删除了所有链接。
仍然有问题,所以我检查了我的代码,它仍然在寻找文件。
所以这次我环顾四周并从回收站中取出。仍在努力寻找身份证。
然后我通过窗口浏览器查看文件夹本身,文件都在那里.....奇怪。所以我删除了所有这些。你猜怎么着?仍在努力寻找媒体。 我检查了我的解决方案资源管理器,是的,你猜对了它仍在那里!所以我也从那里删除了它。
因此,删除所有媒体文件,删除所有引用,删除文件夹中的所有图像。
应该没有参考,没有图像。
但猜猜是什么,我逐步完成以下代码,在Umbraco的某处,它仍然拥有图像的ID。
@if (Model.Content.GetPropertyValue("logo") != null)
{
var mediaItem = Umbraco.TypedMedia(Model.Content.GetPropertyValue("logo", true));
<img class="img-logo" src="@mediaItem.GetPropertyValue("umbracoFile")" width="100" height="50" alt=""/>
}
有人可以告诉我发生了什么事吗?
其他信息:
我发布了我的网站并将其翻到我的开发服务器,数据库没有像我的本地副本一样移动,而开发副本现在指向同一个数据库。这是一个测试,看看发布是否有效。
当我使用该网站时,尽管图像都在文件夹中,但没有显示图像。 我环顾四周,发现它很奇怪。所以我决定删除所有图像和引用,首先我删除了cms中的所有文件夹。然后我从内容中删除了所有引用。 正如我所说的那样,所有人都解释了,无论我做什么,它仍然试图找到这些该死的图像。
任何帮助都会让我感到惊讶,因为我完全陷入困境。
另外:应该提一下
@if (Model.Content.GetPropertyValue("logo") != null)
最初是
@if (Model.Content.HasValue("logo"))
答案 0 :(得分:3)
这可能有点混乱,但我可以在这里帮助你。
保存图像时,它不会以发布内容的方式发布图像。有关写入数据库并由Examine索引的图像的信息。用户界面对图像的任何请求都会访问“检查”索引,而不是数据库,而不是XML缓存。
在CMS中删除图像(随后从回收站中删除)时,物理图像将保留在文件系统中,但记录将从数据库中删除。它也从检验索引中删除。
但是,当内容引用图像时,该引用将记录在数据库中,如果发布则记录在站点XML缓存中。如果您然后从CMS中删除图像,内容仍将引用该图像,正如您自己看到的那样无法找到它。如果取消引用映像,则仍必须发布内容以从XML缓存中删除引用。
在这种情况下,最好的方法是首先取消引用您的图像,重新发布您的内容,然后最后删除图像。
关于删除后仍在Visual Studio中显示的文件,这是因为.csproj文件保留了对文件的引用。如果从操作系统中删除文件,则不会从.csproj文件中删除文件引用。最佳实践是从Visual Studio中删除项目。
希望这会有所帮助。我知道这似乎是Umbraco的一个问题,但你所经历的一切实际上都是应该的样子。
答案 1 :(得分:1)
@digbyswift(+1)给出了很好的答案。
Umbraco偶尔会在回收站中引用ID,因此有时删除的“出现”节点位于回收站中 - 因此,定期清空回收站确实有助于实现目的。将加速代码中的节点遍历。
如果您使用imagegen(大多数人都为图像做),那么当媒体图像被渲染时,imagegen会创建文件的缓存版本 - 这可以包含旧版本的图像的旧缓存版本在一个维度中被引用(但不是随后的)。如果要整理,可以安全地删除任何不确定的缓存文件夹。
如果你没有引用他们所在的内容页面中的图像,那么删除umbraco.config文件,然后Umbraco将重建它&amp;你可以确定任何流氓ids都会在重建过程中丢失。
答案 2 :(得分:0)
好的,经过几个小时的敲击声后终于弄明白了。
当你“保存并发布”并没有实际发布时,原来那个小绿色按钮。
对媒体文件夹进行更改实际上并不能正常工作,并且似乎不同步。(不要引用我,只是观察一下)。
解决问题的唯一方法是“发布”内容,点击您的内容页面,右上角的操作,应该是发布或“重新发布”选项,点击该内容并发布您的内容这似乎实际上解决了问题
我认为数据库和缓存无法同步存在问题,只能在正确的内容发布上进行同步。
希望这将在未来的文档中解释,因为它是开发人员端的巨大时间。希望这有助于家伙们!