C# 将服务器上的文件A替换为B,但会显示文件A

C# 将服务器上的文件A替换为B,但会显示文件A,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我遇到了一个问题,在这种情况下,一个图像被删除,而另一个同名文件被替换(即,该文件被替换)。如下图所示: [HttpPost] [ValidateAntiForgeryToken] public ActionResult _ReplaceGeneral(int ID, HttpPostedFileBase file) { var dbpath = query.FindImages(ID); var path = Server.MapPath(dbpath.ImageURL);

我遇到了一个问题,在这种情况下,一个图像被删除,而另一个同名文件被替换(即,该文件被替换)。如下图所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult _ReplaceGeneral(int ID, HttpPostedFileBase file)
{
     var dbpath = query.FindImages(ID);
     var path = Server.MapPath(dbpath.ImageURL);

     System.IO.File.Delete(path);
     file.SaveAs(path);

     TempData["Message"] = "Image Successfully Replaced!";

     return RedirectToAction("EditGallery");
}
在我的服务器中,文件已成功替换。但是,当我启动站点时,会显示上一个图像

注:

  • 图像没有保存在我的数据库中-它保存在我的服务器上,URL存储在数据库中

  • 我可以在服务器上看到被替换的文件,所以我绝对肯定它正在被替换

问题:即使将图像A替换为图像B,图像A如何以及为什么会显示在我的网站上


我还没有找到任何资源来说明这个问题发生的原因和方式,所以如果是重复的,我很抱歉

这听起来像是浏览器缓存问题。如果图像的URL没有更改,浏览器将使用缓存版本,而不会从服务器获取图像


您可以通过获取上次修改日期/时间的图像文件,将其转换为一个数字,并将其作为查询字符串添加到图像URL(例如&t=XXXXX)来解决此问题。这样,当图像文件更改时,URL也会更改。然后浏览器将加载新图像。

您如何在网站中使用该图像?@ChetanRanpariya我有两种理解问题1的方法。这些图像存储在我的服务器上的一个文件夹中。数据库存储这些照片的URL。2.它在CSS中用作
background image=“relative path”
标记。它听起来像是浏览器正在缓存图像,由于名称没有更改,只是从缓存中加载图像。@Diado我只是尝试清除所有浏览器数据,这样做时我可以确认图像确实发生了更改。如何解决此问题?如果成功保存图像,则缓存可能是唯一的问题。保存图像后,如果按Ctrl+F5在浏览器中刷新页面,是否会显示新图像?例如,我需要使用CSS背景图像的相对路径。由于
背景图像:url(“”
不会更改,因此建议的解决方案将不起作用。我们还有其他解决方法吗?在HTML的样式属性中添加
背景图像
,或者在图像被修改时修改CSS(在CSS引用中添加一个查询字符串以确保它被更新而不是缓存)。我知道这有点太多要求,但是你有什么资源可以帮助我构建你建议的解决方案吗?