HttpServerUtility.Execute 在等待社交提供者的异步操作完成时被阻止
HttpServerUtility.Execute blocked while waiting for an asynchronous operation to complete for Social Providers
根据其他用户的提问Question1, Question2,但没有得到任何正确的答案,所以我在这里问了。
我正在使用 ASP.NET MVC 并尝试通过部分视图加载社交登录提供程序。
但是我做不到它给我一个错误。
这是我的代码 return 我的局部视图:
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");}
这是我做的,不对的地方还请指正!
我刚刚弄明白了,不知道对不对,但我得到了解决方案,希望它能帮助别人。
我刚刚创建了一个 局部视图 并将该局部视图绑定到我想要登录或注册过程的页面中。
绑定局部视图:
@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 fa-@p.Caption.ToLower()" id="@p.Caption"></i>
</button>
</li>
}
</ul>
}
}
}
根据其他用户的提问Question1, Question2,但没有得到任何正确的答案,所以我在这里问了。
我正在使用 ASP.NET MVC 并尝试通过部分视图加载社交登录提供程序。
但是我做不到它给我一个错误。
这是我的代码 return 我的局部视图:
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");}
这是我做的,不对的地方还请指正!
我刚刚弄明白了,不知道对不对,但我得到了解决方案,希望它能帮助别人。
我刚刚创建了一个 局部视图 并将该局部视图绑定到我想要登录或注册过程的页面中。
绑定局部视图:
@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 fa-@p.Caption.ToLower()" id="@p.Caption"></i>
</button>
</li>
}
</ul>
}
}
}