У меня есть 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 Хранилища на мой сайт и загружать каждый отчет в его собственное представление, если это возможно, поскольку они довольно большие, а ссылки на места, где они уже размещены, гораздо быстрее.