c# - 从 Web 表单的 Page_Load 调用异步方法
问题描述
这是一个与我发现的问题相关的问题,但没有奏效。
在我的 Web 表单的页面加载方法中,我想调用异步方法
void Page_Load(object sender, EventArgs e)
我想调用异步方法,因为我希望能够GetUserInfoAsync
调用IdentityModel
这就是我所拥有的
protected void Page_Load(object sender, EventArgs e)
{
var token = HttpContext.Current.Request.Headers.Get("Authorization");
GetUserClaims(token).Wait();
}
public async Task GetUserClaims(string token)
{
var client = new HttpClient();
var response = await client.GetUserInfoAsync(new UserInfoRequest
{
Address = "https://localhost:44367/connect/userinfo",
Token = token,
});
var result = response.Claims;
}
当前的问题是我从未到达过result = response.claims
部分。
GetUserClaims(token).Wait();
是基于我上面链接的问题的答案。
我尝试的另一个选项是使用答案中的一个选项中提到的 PageAsyncTask 和 RegisterAsyncTask 。
PageAsyncTask t = new PageAsyncTask(GetUserClaims(token));
但我得到了红色波浪状的东西,抱怨说
cannot convert from System.Threading.Task.Task to System.Func<System.Threading.Task.Task>
解决方案
实际上这有帮助
protected void Page_Load(object sender, EventArgs e)
{
var token = HttpContext.Current.Request.Headers.Get("Authorization");
PageAsyncTask t = new PageAsyncTask(() => GetUserClaims(token));
// Register the asynchronous task.
Page.RegisterAsyncTask(t);
// Execute the register asynchronous task.
Page.ExecuteRegisteredAsyncTasks();
//GetUserClaims(token).ConfigureAwait(false).GetAwaiter().GetResult();
}
推荐阅读
- minecraft - 我怎样才能停止重命名的项目是斜体?
- javascript - AngularJS:如果循环中的项目等于当前位置,则打印特定的类
- unit-testing - 在运行单元测试时启用 Dart 2 的代码覆盖率
- php - MYSQL数据库密码设置
- python - 在python中读取时将文本的所有值转换为int
- c# - 如何在.net core中安排一个方法?
- django - 如何在模板输入中推送上传的图像文件以在 django 2.0 中更新
- error-handling - 目前无法处理此请求。HTTP 错误 500 (yii2)
- ios - 如何在 Xcode 10 中将我的项目导入 Playground?
- c# - 我们是否必须在页面或 ViewModel 页面后面的 xml 代码中编写 OnItemTapped 方法?如何?