来自HTML帮助程序的异步调用

时间:2016-09-06 06:11:53

标签: asp.net-mvc asynchronous asp.net-web-api

我正在从HTML Helper进行简单的webclient异步调用。为什么运行此代码时会出现此异常。

using (var webClient = new WebClient())                {
   webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
   webClient.Headers["Content-Type"] = "application/json";
   webClient.Encoding = Encoding.UTF8;
   string orderString = JsonConvert.SerializeObject(orders);
   string result = webClient.UploadStringAsync(createOrderURI, orderString);

例外

  

System.InvalidOperationException不能进行异步操作   从这个时候开始。只能启动异步操作   在异步处理程序或模块中或在某些事件中   页面生命周期

我不想将控制器转移到异步等,因为我正在使用Umbraco的Teacommerce订单。这个调用是在创建订单时对外部api。

1 个答案:

答案 0 :(得分:1)

根据" Async method call in Razor view" ASP.NET MVC中不支持异步methoc调用,但是在ASP.NET Core MVC中。

因此,在您自己的情况下,无法在View自身或HTML Helper中执行异步调用,这些调用在同一上下文中执行。 Razor引擎捕获这些尝试并引发引用的异常。

为了遵循MVC模式,我建议重新评估在异步操作方法中将此逻辑放入控制器并将数据放入视图模型的想法。