in wvd-templates/diagnostics-sample/src/MSFT.WVD.Diagnostics/Controllers/DiagonizeIssuesController.cs [410:458]
public async Task<IActionResult> ActivityHostDetails(string id)
{
string upn = HttpContext.Session.Get<string>("SelectedUpn");
tenantGroupName = HttpContext.Session.Get<string>("SelectedTenantGroupName");
tenant = HttpContext.Session.Get<string>("SelectedTenantName");
var refreshtoken = await HttpContext.GetTokenAsync("refresh_token").ConfigureAwait(false);
accessToken = _commonService.GetAccessTokenWVD(refreshtoken); //await HttpContext.GetTokenAsync("access_token");
var ConnectionActivity = await _diagnozeService.GetActivityHostDetails(accessToken, tenantGroupName, tenant, id).ConfigureAwait(false);
if (ConnectionActivity?.Count > 0 && ConnectionActivity[0].ErrorDetails != null)
{
_logger.LogError($"Error Occured : {ConnectionActivity[0].ErrorDetails.Message}");
return RedirectToAction("Error", "Home", new ErrorDetails() { StatusCode = ConnectionActivity[0].ErrorDetails.StatusCode, Message = ConnectionActivity[0].ErrorDetails.Message });
}
else
{
var userSessions = await GetUserSessions(accessToken, tenantGroupName, tenant, ConnectionActivity[0].SessionHostPoolName, ConnectionActivity[0].SessionHostName).ConfigureAwait(false);
if (userSessions != null && userSessions.Count > 0 && userSessions[0].httpStatus == HttpStatusCode.OK)
{
userSessions.ForEach(x => x.IsSelected = x.adUserName.ToString().Split(@"\")[1] == ConnectionActivity[0].userName.Split('@')[0] ? true : false);
}
else if (userSessions != null && userSessions.Count > 0 && (userSessions[0].httpStatus == HttpStatusCode.Forbidden || userSessions[0].httpStatus == HttpStatusCode.Unauthorized))
{
return RedirectToAction("Error", "Home", new ErrorDetails() { StatusCode = (int)userSessions[0].httpStatus, Message = "Access Denied! You are not authorized to view user sessions. Please contact system administrator." });
}
return View(new DiagnoseDetailPageViewModel()
{
ConnectionActivity = new ConnectionActivity
{
activityId = ConnectionActivity[0].activityId,
activityType = ConnectionActivity[0].activityType,
outcome = ConnectionActivity[0].outcome,
Tenants = ConnectionActivity[0].Tenants,
userName = ConnectionActivity[0].userName,
ClientOS = ConnectionActivity[0].ClientOS,
ClientIPAddress = ConnectionActivity[0].ClientIPAddress,
startTime = Convert.ToDateTime(ConnectionActivity[0].startTime),
endTime = Convert.ToDateTime(ConnectionActivity[0].endTime),
SessionHostName = ConnectionActivity[0].SessionHostName,
SessionHostPoolName = ConnectionActivity[0].SessionHostPoolName
},
UserSessions = userSessions,
ShowConnectedUser = false,
ShowMessageForm = true,
VMPerformance = await GetVMPerformance(ConnectionActivity[0].SessionHostName).ConfigureAwait(false)
});
}
}