0

Как задано Question1, Question2 от других пользователей, но нет надлежащего ответа, поэтому я спросил здесь.HttpServerUtility.Execute заблокирован в ожидании завершения асинхронной операции для социальных провайдеров

Я использую ASP.NET MVC и пытаюсь загрузить поставщиков социальных подключений путем частичного просмотра.

Но я не могу это дать мне ошибку.

enter image description here

Это мой код, откуда я возвращаю мой частичный вид:

public async Task<PartialViewResult> GetProviders() 
     { 
      string apiUrl = "mywebsite"; 

      using (HttpClient client = new HttpClient()) 
      { 
       client.BaseAddress = new Uri(apiUrl); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 

       HttpResponseMessage response = await client.GetAsync("Account/externalloginpathhere"); 
       //var result = Task.Run(async() => { await client.GetAsync("Account/externalloginpathhere"); }).Result; 
       if (response.IsSuccessStatusCode) 
       { 
        var data = await response.Content.ReadAsStringAsync(); 
        var providers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ViewModel>>(data); 

        foreach(var provider in providers) 
        { 
         if (provider.Name == "Google") 
         { 
          //code come here 
         } 
         else if (provider.Name == "Facebook") 
         { 
          //code come here 
         } 
         else if (provider.Name == "Microsoft") 
         { 
          //code come here 
         } 
        } 
        return PartialView("~/Views/Account/_ExternalLoginsListPartial.cshtml", providers); 
       } 
       return null; 
      } 
     } 

Посмотреть звонок из дома контроллера Вид:

@{Html.RenderAction("GetProviders", "Account");} 

Это то, что я сделал, пожалуйста, поправьте меня, если я ошибаюсь!

+0

вы нашли какой-либо ответ на это? – batmaci

+0

@batmaci Я только что опубликовал ответ, пожалуйста, обратитесь к нему. –

ответ

0

Я только что понял, не знаю, правильно или нет, но я получил решение, надеюсь, что это поможет кому-то.

Я только что создал один частичный вид и связал этот частичный просмотр внутри страницы, где я хочу войти или зарегистрироваться.

Bind частичный вид:

@Html.Partial("~/Views/Account/_ExternalLoginsListPartial.cshtml") 

Внешние поставщики Частичный вид:

@{ 
    var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes(); 
    if (loginProviders.Count() >= 0) 
      { 
      using (Html.BeginForm("ExternalLogin", "Account", FormMethod.Post, new { id = "externalLogin" })) 
      { 
    @Html.AntiForgeryToken() 
       <ul> 
        @foreach (var p in loginProviders) 
        { 
         <li> 
         <button value="@p.Caption" title="Login using @p.Caption account" name="provider" id="@p.Caption.ToLower()" type="submit" class="social-button"> 
          <i class="fa [email protected]()" id="@p.Caption"></i> 
         </button> 
        </li> 
        } 
       </ul> 
       } 
      } 
} 
Смежные вопросы