0

我们正在构建一种使用 eConnect 处理时间表的自定义方法。公开了一种方法,该方法允许将时间表文件提交给 GP。此方法同步运行,但可能需要很长时间才能完成。我该如何处理这个问题,以便用户的客户端可以同时提出额外的请求?

我尝试在此方法上使用 async/await,但由于该方法不可等待,因此无法正常工作。该方法取决于 Windows 服务。我已经研究过可能将其包装在 Task.Run 中,但犹豫不决,因为这听起来是一种不好的做法。

    public bool SaveTimesheets(string ConnectionString, List<PATimeSheetsType> Timesheets)
    {
        string timesheetDocument = string.Empty;
        //Creating timesheet document

        bool result = false;

        eConnectMethods eConnectMethods = new eConnectMethods();

        //CreateEntity takes minutes to complete and return
        result = eConnectMethods.CreateEntity(ConnectionString, timesheetDocument);


        return result;
    }

我目前得到的行为是,例如,如果我在客户端进行 ajax 调用,则在执行上述方法时调用似乎没有到达那里。我希望方法调用在后台执行,以便客户端仍然可以与服务器通信以执行其他请求。

4

1 回答 1

0

我该如何处理这个问题,以便用户的客户端可以同时提出额外的请求?

最简单的解决方案是将会话状态更改为无或只读(对于此请求和其他请求)。然后 ASP.NET 将允许同一会话的多个客户端请求。

如果您使用的是 pre-Core,则会话状态文档在此处

于 2019-04-19T21:10:57.083 回答