【问题标题】:Async call from HTML helper来自 HTML 助手的异步调用
【发布时间】:2018-10-08 01:48:47
【问题描述】:

我正在从 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。

【问题讨论】:

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


    【解决方案1】:

    根据“Async method call in Razor view”,异步方法调用在 ASP.NET MVC 中不受支持,但在 ASP.NET Core MVC 中。

    因此,在您的情况下,视图本身或 HTML 助手中的异步调用(这些调用在同一上下文中执行)是不可能的。 Razor 引擎捕获这些尝试并引发引用的异常。

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

    【讨论】:

    • 谢谢。对了,要咬紧牙关。将不得不接入茶叶贸易的控制者,看看我能做什么。
    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多