Я создал простой веб-сайт ASP.NET Core 2.2 в VS2019 и включил проект Microsoft.Identity.Web для выполнения вызовов с использованием MSAL.NET в Microsoft Graph API.
Я успешно выполнял вызовы на график, включая показ моей фотографии с конечной точки /me
в верхней панели навигации, введя tokenAcquisition
и graphApiOperations
, как указано в примере приложения в документах следующим образом:
public async Task OnGet()
{
var accessToken = await tokenAcquisition.GetAccessTokenOnBehalfOfUser(HttpContext, new[] { ScopeConstants.ScopeUserRead });
var photo = await graphApiOperations.GetPhotoAsBase64Async(accessToken);
ViewData["photo"] = photo;
}
Следуя вместе с шаблоном сайта, каждая страница ссылается на файл _layout.cshtml
со ссылкой на _LoginPartial.cshtml
, который выглядит следующим образом:
<ul class="navbar-nav">
@if (User.Identity.IsAuthenticated)
{
<li class="nav-item">
<a href="/AdminSettings">
<img class="circle-photo" src="data:image/jpeg;base64, @ViewData["photo"]" />
</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="AzureAD" asp-controller="Account" asp-action="SignIn">Sign in</a>
</li>
}
</ul>
Мой вопрос:
Я хочу показать фотографию и, возможно, другие данные Графика на каждой странице Razor, не вызывая График вручную на каждой странице.Поскольку _LoginPartial.cshtml
не является страницей Razor, я не могу поместить результаты в @ViewData
, однако я не знаю другого способа.Кажется бесполезным просить График получить данные /me
для каждой страницы;не говоря уже о плохом дизайне.
Есть ли способ кэшировать результаты и ссылаться на них на нескольких страницах?