Как создать stati c URL, который всегда указывает на самую последнюю версию размещенного файла - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть ASP. NET MVC веб-сайт, который используется для предоставления списка бизнес-отчетов. Содержимое этих отчетов хранится в файлах, размещенных в Azure хранилище больших двоичных объектов и связанных с каждой записью отчета на моем сайте.

Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда содержимое отчета изменяется на новый обновленный файл загружен на Azure и, поскольку это новая загрузка, у него новый URL. Проблема заключается в том, что когда мои пользователи добавляют в закладки или публикуют эти URL-адреса, общие ссылки становятся устаревшими при обновлении отчета, и нажатие на них приводит их к старой версии файла содержимого отчета (если он существует в Azure) или в тупик.

Вот cs html и контроллер / модель, которая загружает индекс.

// The ViewModel
public class ReportsModel
{
    public string FileName { get; set; }
    public string AzureUrl { get; set; } // This is the link to the Content of the report and 
                                         // is the part that changes, causing the issue
    public bool Subscribed { get; set; }
    public string TrackerId { get; set; }
}

// the controller
public async Task<ActionResult> Index()
{
    if (Request.IsAuthenticated)
    {
        // This call gets all the reports from the storage Blob, including some metadata 
        // (names, subscription statuses etc) and the URL which points to the most recent 
        //  version of the Azure hosted file containing the actual content of each Report
        List<ReportsModel> result = await GetReportsFromStorage();
        return View(result);
    }
    else
    {
        return RedirectToAction("SignIn", "Home");
    }
}

// ...

// In the View
<table class="table">
    @foreach (var report in Model)
    {
        <tr>
            <td>
                <a class="font-weight-bold" target="_blank" title="@report.FileName" href="@report.AzureUrl">@report.FileName</a>
            </td>
        </tr>
    }
</table>

Важным компонентом здесь является href="@report.AzureUrl". Этот URL-адрес изменяется каждый раз, когда новая версия отчета загружается на Azure. Могу ли я в любом случае создать псевдоним, возможно, что-то вроде www.mywebsite.com/Reports/TrackerID, который соответствует тому, что является самым последним AzureURL для этого отчета? Я бы не хотел извлекать данные из Azure Хранилища на мой сайт и загружать каждый отчет в его собственное представление, если это возможно, поскольку они довольно большие, а ссылки на места, где они уже размещены, гораздо быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...