processing concurrrent requests from same user - Front- & Back-End Development - Front- & Back-End Development - Progress Community
 Front- & Back-End Development

processing concurrrent requests from same user

  • processing concurrrent requests from same user
  • Hi , Here is a question regarding request processing queue in Sitefinity.

    I have two pages in my sitefinity website.  Let's call it SlowPage and FastPage

    SlowPage has a widget in it which does a lot of complicated data processing so it takes 20 seconds to run.  So when this page is requested it will take more than 20 seconds for the page to load in the browser

    FastPage is a normal page having only some text content in it, so it loads  very quickly.

    A user makes a request to SlowPage and waits for the page to load. Meanwhile he clicks on a link to navigate to the FastPage . The result here is that the user won't be navigated to the FastPage until the server completes the processing of the Slowpage.
    It appears to me  that the requests from the same user are going in a queue and are processed only one after another.  So the server will process the request for FastPage only after it finishes processing the previous request.

    I have done some googling and found that it is a known problem in MVC .  MVC seems to be process the requests from the same session sequentially as it needs to lock the session while the page being processed. There is a workaround for this problem in ASP.Net MVC . The workaround is to set the SessionState to ReadOnly. It is explained here

    I have tried to apply the same workaround in my sitefinity website but it doesn’t seem to be working. I mean, even after setting the SessionSate to readonly on all my controllers the requests are still processed only one after another.

    Does any know knows how to fix this?  what I would like to achieve is, when the SlowPage is being loaded in the browser, if the user decides to navigate to the Fastpage he should be taken to that page immediately without having to wait for the server to  complete the processing of the Slowpage.





  • I've solved this issue. You have to:

    1. Use Classic MVC mode: 

    2. Manually write your route as in MVC. Don't use @Url.Action because sitefinity will generate different route.

    3. Mark your controller with SessionState to ReadOnly. You still can read/write session in your controller as normal.

    Now you app can handle concurrent request for same user.