HttpServerUtility.Execute заблокирован во время ожидания завершения асинхронной операции

У меня есть приложение asp.net mvc с частичным представлением для отображения имени профиля пользователя

@{ Html.RenderAction("GetPropertiesForUser", "UserProfile"); }

@model Inspinia_MVC5_xx.Models.UserProfile
<div class="dropdown profile-element">
    <span>
        <img alt="image" class="img-circle" src="~/Images/profile_small.jpg" />
    </span>
    <a data-toggle="dropdown" class="dropdown-toggle" href="#">
        <span class="clear">
            <span class="block m-t-xs">
                <strong class="font-bold">@Model.displayName</strong>
            </span> <span class="text-muted text-xs block">Art Director <b class="caret"></b></span>
        </span>
    </a>
    <ul class="dropdown-menu animated fadeInRight m-t-xs">
        <li><a href="@Url.Action("Profile", "AppViews")">Profile</a></li>
        <li><a href="@Url.Action("Contacts", "AppViews")">Contacts</a></li>
        <li><a href="@Url.Action("Inbox", "Mailbox")">Mailbox</a></li>
        <li class="divider"></li>
        <li><a href="@Url.Action("Login", "Pages")">Logout</a></li>
    </ul>
</div>
<div class="logo-element">
    IN+
</div>

Код:

public class UserProfileController : Controller
{
    public async Task<ActionResult> GetPropertiesForUser()
    {
        Uri serviceRoot = new Uri(SettingsHelper.AzureAdGraphApiEndPoint);
        var token = await AppToken.GetAppTokenAsync();

        ActiveDirectoryClient adClient = new ActiveDirectoryClient(
         serviceRoot,
         async () => await AppToken.GetAppTokenAsync());
        string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;

        Microsoft.Azure.ActiveDirectory.GraphClient.Application app = (Microsoft.Azure.ActiveDirectory.GraphClient.Application)adClient.Applications.Where(
            a => a.AppId == SettingsHelper.ClientId).ExecuteSingleAsync().Result;
        if (app == null)
        {
            throw new ApplicationException("Unable to get a reference to application in Azure AD.");
        }

        string requestUrl = string.Format("https://graph.windows.net/{0}/users/{1}?api-version=1.5", SettingsHelper.Tenant,ClaimsPrincipal.Current.Identities.First().Name);

        HttpClient hc = new HttpClient();
        hc.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(
            "Bearer", token);

        HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl));

        if (hrm.IsSuccessStatusCode)
        {
            UserProfile up = JsonConvert.DeserializeObject<UserProfile>(await hrm.Content.ReadAsStringAsync());
            return PartialView(up);
            //return View("GetPropertiesForUser", new UserProfile
            //{
            //    DisplayName = up.displayName() //I am still missing here to get the display name only
            //});
        }
        else
        {
            return View();
        }
    }

}

Однако я получаю эту ошибку

HttpServerUtility.Execute заблокирован во время ожидания завершения асинхронной операции. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: HttpServerUtility.Execute заблокирован во время ожидания завершения асинхронной операции.

Ошибка источника:

Строка 4: Строка 5:
Строка 6: @{ Html.RenderAction("GetPropertiesForUser", "UserProfile"); } Строка 7:
Строка 8:

Как я могу это исправить?

0 ответов

Другие вопросы по тегам