Я работаю над существующим проектом, в котором все изображения проходят через контроллер изображений, и теперь, когда мы перемещаем статический контент (изображения) из MongoDB в Azure, мне нужно выполнить перенаправление 301, чтобы изображения выбирались изновое местоположение.
Мне удалось без проблем выполнить 301 со следующим кодом:
public async Task<ActionResult> Index(string id, string size)
{
string redirectUrl;
if (string.IsNullOrEmpty(assetBlobUrl)) assetBlobUrl = ConfigurationManager.AppSettings["AssetBlobUrl"];
if (!string.IsNullOrEmpty(assetBlobUrl))
{
bool blobExists = await _blobExists(size, id).ConfigureAwait(false);
if (blobExists)
{
redirectUrl = string.Format(assetBlobUrl, size, id);
return new PermanentRedirectResult(redirectUrl);
}
}
return ResponseImageNotFound();
}
public ActionResult ResponseImageNotFound()
{
Response.StatusCode = 404;
return File("/Content/images/image_not_found.jpg", "image/jpeg");
}
private async Task<bool> _blobExists(string size, string assetId)
{
return await container.GetBlockBlobReference(size + "/" + assetId + ".jpg").ExistsAsync();
}
public class PermanentRedirectResult : ActionResult
{
public string Url { get; set; }
public PermanentRedirectResult(string url)
{
this.Url = url;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
context.HttpContext.Response.RedirectLocation = this.Url;
context.HttpContext.Response.End();
}
}
, и все работает нормально, отображаются «новые» изображения, но проблема заключается в изображенияхsrc все еще указывает на старый URL.Чтобы убедиться в этом, я просто заставил контроллер выбирать изображения с одного определенного URL-адреса, и все изображения являются этим принудительным изображением, но когда вы выполняете «Проверку» в браузере, то в исходном html вы все равно видите старую старую картинку.
Я уже знаю, что src должен быть изменен в Javascript (или jQuery), так как это DOM, но это очень большой проект со многими помощниками, и я не хотел бы начинать модификацию большого количества кода, поэтому мне интересно, есть ли возможностьчто мой контроллер изображений помимо перенаправления (что уже работает) заменяет images src.
Заранее спасибо.