我有一个页面加载,我很难让它从异步按钮单击获取值。代码如下。我对此很新,所以请考虑到这一点。发生的事情本质上是代码似乎只是在单击按钮并执行GetAuthorizationCode后停止。我在getReportButton_Click中获取了temp的值,但是在Page_Load部分没有执行其他方法。本质上,我在Microsoft.Identity引用的旧版本中工作,但升级后需要将许多组件切换为异步,这就是我现在被困住的地方。
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params.Get("code") != null)
{
Session["AccessToken"] = GetAccessToken();
Response.Redirect("/Default.aspx");
}
if (Session["AccessToken"] != null)
{
accessToken.Value = Session["AccessToken"].ToString();
GetReport(0);
}
}
protected async void getReportButton_Click(object sender, EventArgs e)
{
var temp = await GetAuthorizationCode();
Response.Write(temp);
}
public async Task<string> GetAuthorizationCode()
{
var serviceUri = "XXXXXXXX";
var clientID = "XXXXXXXXX";
var userName = $"XXXXXXXX";
var password = "XXXXXXXXX";
using (var webClient = new WebClient())
{
var requestParameters = new NameValueCollection();
requestParameters.Add("resource", serviceUri);
requestParameters.Add("client_id", clientID);
requestParameters.Add("grant_type", "password");
requestParameters.Add("username", userName);
requestParameters.Add("password", password);
requestParameters.Add("scope", "openid");
var url = $"XXXXXXXXXXXX";
var responsebytes = await webClient.UploadValuesTaskAsync(url, "POST", requestParameters);
var responsebody = Encoding.UTF8.GetString(responsebytes);
return responsebody;
}
}
答案 0 :(得分:0)
我最终将此代码的多个方面更改为原始帖子不接近结束代码的点。记录故事简短,我在按钮单击下拉了GetAuthorizationCode()并将其移动到page_load,将输出存储到全局变量。然后我将该全局变量传递给按钮单击操作以调用其他异步任务。