2017-12-09 1 views
0

비동기 단추 클릭에서 값을 가져 오는 데 페이지로드가 발생했습니다. 코드는 다음과 같습니다. 나는 이것에 아주 새롭다 그래서 고려하십시오. 본질적으로 코드는 버튼이 클릭되고 GetAuthorizationCode가 실행 된 후에 막 멈추는 것처럼 보입니다. getReportButton_Click의 임시 응답에 값을 다시 가져 오지만 다른 메소드는 Page_Load 섹션에서 실행되지 않습니다. 본질적으로, 이전 버전의 Microsoft.Identity 참조에서이 작업을 수행했지만 업그레이드 한 후에는 많은 구성 요소를 비동기로 전환해야했습니다. 이제 그 부분이 멈추었습니다.async 메서드가 필요한 값을 얻은 후에 Page_Load가 처리되지 않습니다.

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

저는 이전 코드에서 params 속성으로 데이터를 반환하고 코드 매개 변수가 있는지 확인했습니다. 새 버전의 코드에서 비동기 단추 누르기 작업 후에 왜 멈추는 지 알 것입니다. – jroby

+0

나는 대부분의 코드를 정리했지만, 내가 고민하는 문제는 pageRoad가 getReportButton_Click 반환 값을 기다리는 것이다. – jroby

답변

0

이 코드의 여러 측면을 원래 게시물이 끝나는 코드와 다르게 변경되었습니다. 짧은 이야기로, 버튼 클릭 아래에있는 GetAuthorizationCode()를 가져 와서 page_load로 이동하여 출력을 전역 변수에 저장했습니다. 그런 다음 해당 전역 변수를 버튼 클릭 동작에 전달하여 다른 비동기 작업을 호출합니다.

관련 문제