C # MVC Redirect 301 изменить изображения SRC из контроллера - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над существующим проектом, в котором все изображения проходят через контроллер изображений, и теперь, когда мы перемещаем статический контент (изображения) из 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.

Заранее спасибо.

...