Kentico - AsyncWorker (выполнить задание) - PullRequest
0 голосов
/ 27 января 2020

У нас есть Kentico CMSAbstractWebPart, который взаимодействует со сторонней службой. Служба исторически использовала SOAP, но переместилась в JSON (таким образом, теперь asyn c).

Все наши команды низкого уровня относятся к типу Task. Чтобы выполнить их за пределами Kentico, мы вызываем вызовы с помощью:

Task.Run(async () => { await task; });

Однако, когда внутри Kentico, это вызовет взаимоблокировки с пользовательским интерфейсом. Мы пытаемся использовать AsyncWorker от Kentico, но не можем найти правильные методы / параметры.

Вот пример того, что мы пытаемся:

AsyncWorker worker = new AsyncWorker();
worker.RunAsync(task, System.Security.Principal.WindowsIdentity.GetCurrent());
worker.WaitForFinish();

Любое руководство, которое вы могли бы дать, С благодарностью!

Спасибо!

1 Ответ

0 голосов
/ 27 января 2020

Стоит проверить две вещи:

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) В любом случае ваш код веб-части в любом случае будет вызываться синхронно, пытались ли вы явно вызвать его синхронно, как описано в этой статье ?

...