我们有一个与第三方服务交互的Kentico。该服务以前使用SOAP,但已转移到JSON (因此现在是异步的)。
我们所有的低级命令都是Task类型的。为了在Kentico之外执行它们,我们使用以下命令调用这些调用:
Task.Run(async () => { await task; });但是,当在Kentico中时,这将导致UI死锁。我们正在尝试使用Kentico的AsyncWorker,但是找不到正确的方法/参数。
下面是我们正在尝试的一个示例:
AsyncWorker worker = new AsyncWorker();
worker.RunAsync(task, System.Security.Principal.WindowsIdentity.GetCurrent());
worker.WaitForFinish();如果您能给出任何建议,我们将不胜感激!
谢谢!
发布于 2020-01-28 02:14:32
有两件事可能值得一查:
1)检查\Web\CMS\CMSPages\PortalTemplate.aspx文件,使其在页面上包含Async="true“属性:
<%@ Page Language="C#" AutoEventWireup="true" Inherits="CMSPages_PortalTemplate" Async="true"
ValidateRequest="false" MaintainScrollPositionOnPostback="true" EnableEventValidation="false"
Codebehind="PortalTemplate.aspx.cs" %>2)在任何情况下,您的web部件代码都将被同步调用,您是否尝试过像this article中描述的那样显式同步调用它
https://stackoverflow.com/questions/59924846
复制相似问题