0

We are building a custom way to process timesheets using eConnect. A method is exposed that allows out timesheets documents to be submitted to GP. This method is run synchronously, but can take a long time to complete. How can I handle this so that the user's client can make additional requests in the meantime?

I have attempted to use async/await on this method, but because the method isn't awaitable this will not work. The method depends on a windows service. I have researched potentially wrapping it in Task.Run but have hesitations since this sounds like a bad practice.

    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;
    }

The behavior I currently get is that, if for instance I am doing an ajax calls on the client-side, the call doesn't seem to get there while the method above is executing. I would like it so that the method call executes in the background so that the client can still communicate with the server to execute other requests.

DeveryDay
  • 161
  • 15

1 Answers1

0

How can I handle this so that the user's client can make additional requests in the meantime?

The easiest solution is to change your session state to be None or Read-Only (for both this and the other requests). Then ASP.NET will allow multiple client requests for the same session.

If you're on pre-Core, the session state docs are here.

Stephen Cleary
  • 437,863
  • 77
  • 675
  • 810