0
컨트롤러의 작업 메서드에 목록을 반환하는 비동기 메서드를 호출하려고합니다. 그러나 Action 메서드는 비동기 메서드가 아닙니다. 액션에서 async 메서드를 호출 할 수 있도록이 코드를 어떻게 수정할 수 있습니까? 위에 컨트롤러 액션 메소드의 서명을 변경하는 경우MVC 컨트롤러 작업에서 asyc 메서드를 호출하려면 어떻게해야합니까?
public ActionResult AdvisorsMapCompleted()
{
List<AdvisorMapInfo> infos = await AdvisorsMapBL.getAdvisorsAsync();
//task.Wait();
}
public static async Task<List<AdvisorMapInfo>> getAdvisorsAsync()
{
var auth = new AuthenticationClient();
//Authenticate with Salesforce
var url = IsSandboxUser.Equals("true", StringComparison.CurrentCultureIgnoreCase)
? "https://test.salesforce.com/services/oauth2/token"
: "https://login.salesforce.com/services/oauth2/token";
await auth.UsernamePasswordAsync(ConsumerKey, ConsumerSecret, Username, Password, url);
var client = new ForceClient(auth.InstanceUrl, auth.AccessToken, auth.ApiVersion);
const string qry = "SELECT Name,Primary_Contact__c,Asset_Range_Lower__c,Asset_Range_Upper__c,BillingAddress FROM Account WHERE (Account_Type__c='Advisor' or Account_Type__c='provider')";
var accts = new List<AdvisorMapInfo>();
var results = await client.QueryAsync<AdvisorMapInfo>(qry);
var totalSize = results.totalSize;
accts.AddRange(results.records);
var nextRecordsUrl = results.nextRecordsUrl;
if (!String.IsNullOrEmpty(nextRecordsUrl))
{
while (true)
{
var continuationResults = await client.QueryContinuationAsync<AdvisorMapInfo>(nextRecordsUrl);
totalSize = continuationResults.totalSize;
accts.AddRange(continuationResults.records);
if (string.IsNullOrEmpty(continuationResults.nextRecordsUrl)) break;
nextRecordsUrl = continuationResults.nextRecordsUrl;
}
}
return accts;
}