我正在構建一個使用MVC 5的web應用程序,我不能在PartialViewResults中使用Async/Await模式,因爲它會導致運行時錯誤。正因爲如此,我不等待某些任務。在MVC中不使用異步/等待的影響4
例如,我有這個頭UI這是在我的應用程序大多數頁面使用的PartialViewResult:
/// <summary>
/// Get UI header for trainee's main details, name, aim, score etc
/// </summary>
/// <param name="personId"></param>
/// <param name="aim"></param>
/// <param name="showScore"></param>
/// <returns></returns>
public PartialViewResult _TraineeHeaderDetails(int personId, string aim, bool showScore, bool showEvidenceLink)
{
var result = _httpService
.Get(_urlConfigurations.GetTraineeDetails + personId + "/" + aim);
if (result.StatusCode != HttpStatusCode.OK)
//TODO: NG - add proper mvc error page redirect
throw new Exception("ID not found");
//RedirectToAction("")
// use GetAwaiter to get around async/await limitation in MVC 5
var model = _jsonDeserializer.GetModelAsync<TraineeHeaderViewModel>(result).GetAwaiter().GetResult();
if (model == null) return PartialView(new TraineeHeaderViewModel());
//For link to trainee summary
model.PersonId = personId;
model.AimCode = aim;
// flag to show/hide graph
model.ShowScore = showScore;
// flag to show/hide evidence link
model.ShowEvidenceLink = showEvidenceLink;
return PartialView(model);
}
正如你看到的,我的HTTP服務調用的就是其中MVC的行動我通常使用GetAsync和反序列化我的JSON結果時,我使用.GetAwaiter()。GetResult();
我的問題是,這會影響應用性能嗎?因爲它是MVC,並沒有我正在使用的UI線程(值使用Razor渲染),所以我認爲我正在做的事情沒問題,但我很想知道別人怎麼看待這個問題。
尼克
IIS服務器請求中存在有限的工作線程,使用async await將釋放請求線程,直到異步操作完成 –