【发布时间】:2015-08-11 08:10:01
【问题描述】:
我知道如何在 ASP.NET 应用程序example Async-ASP.NET 中使用异步方法。
现在我需要在ServerValidate 事件上调用CustomValidator 中的网络服务,并由服务结果决定值是否有效。服务方法是异步的,我不确定如何处理。如果我使用 async void 事件处理程序,验证将无法正常工作,因为在验证不成功的情况下不会显示验证消息。似乎 await 不等待 Web 服务的结果,ASP.NET 也不等待验证器发送响应。
解决这个问题的正确方法是什么?或者如何在验证器事件处理程序中使用RegisterAsyncTask?页面设置为Async="true"。
我的一段代码:
protected async void cvWorkplace_ServerValidate(object sender, ServerValidateEventArgs e)
{
// do test call to sap
var testResult = await PerformLabelServiceTestCallAsync(materialId, ddPlant.SelectedValue, workplaceName, UsersLanguage);
if (testResult.HasError)
{
e.IsValid = false;
// other stuff
// ...
}
else
{
e.IsValid = true;
}
}
【问题讨论】:
标签: asp.net async-await