【问题标题】:How can I suppress 404 error when a file is not found?找不到文件时如何抑制 404 错误?
【发布时间】:2021-05-07 03:22:43
【问题描述】:

我有一个网页列表example.com/object/140example.com/object/141example.com/object/142、...

并且每个页面都应该有一个特定的背景图片example.com/assets/images/object/140.jpg, example.com/assets/images/object/141.jpg, ...

缺少一些图像,然后我使用默认图像。在这种情况下,当我检查图像是否存在时,我会收到 404 错误。我已经在几页看到there isn't a direct way to avoid this problem

然后我做了以下事情:我在后端 (C#) 中创建了一个服务来检查文件是否存在 File.Exists(fileName);。这样,我设法在我的本地主机中避免了这个错误。到目前为止一切顺利。

现在我在 Azure 的两个不同服务中发布了我的前端和后端。图像在前端,但文件服务在后端。我的方法不再起作用,因为我无法从后端直接访问前端文件夹。一种解决方案可能是从后端到前端进行 http 调用,但我认为这没有多大意义,它变得太混乱了。

一种选择是在数据库中存储一个带有(不)存在信息的布尔值,但我认为这很容易出现不一致(例如,如果在加载或删除新图像时布尔值没有立即更新) ,即使我每天都要清理它。

还有一个选择是将图像直接存储在数据库中,并将它们与我在每个特定页面中加载的对象的 DTO 一起检索,但我想应该存储仅在 frondend 中显示的图像在前端......不应该吗?

因此:

a) 这些想法是否可以接受?有没有更好的方法来避免这个错误?

b) 另一种可能性:有没有办法从后端访问前端文件夹?我对 Azure 中的发布和工件有点迷失了,我不知道我是否能以某种方式做到这一点。

【问题讨论】:

    标签: javascript c# azure


    【解决方案1】:

    我不确定您是如何构建前端的,但我假设背景图像是使用 CSS 设置的。可以在同一规则中设置多个背景图像,浏览器将全部加载它们并在另一个下方显示它们 - 如果第一个成功加载并且不透明,那么这是用户唯一会做的事情看。但如果第一张图片加载失败——例如因为它不存在,就会显示第二张图片。

    有关详细信息,请参阅此其他答案:https://stackoverflow.com/a/22287702/53538

    【讨论】:

    • 感谢您的建议!我尝试使用“alt image”,但无论如何我在控制台中都收到了 404 错误。是的,该页面有效,但我在控制台中遇到错误,这就是我想要避免的。我将检查 css 中的 background 解决方案是否有效,但这只能部分解决我的问题,因为在某些页面中我也使用此图像但不在背景中。
    • 不,它不起作用:我仍然得到 404。图像加载正确但我无法避免 404 :-(
    • 然后你需要在javascript中加载它:为第一个图像制作一个XHR,如果它加载了 - 更新CSS(数据应该被缓存,所以它会立即出现)否则设置背景。明天我会写一篇适当的文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2023-03-03
    • 2018-01-24
    相关资源
    最近更新 更多