【问题标题】:ASP.Net - Wait until all Page Methods are not completedASP.Net - 等到所有页面方法都没有完成
【发布时间】:2015-07-30 11:34:52
【问题描述】:

我有一个 ASP.NET 应用程序,并且有一个页面,其中所有服务器端处理都使用页面方法(页面上提供了脚本管理器)。 现在的问题是服务器上有多个页面方法异步处理,有些需要 1~20 秒,有些在另一个成功时执行,但其中一个大约需要 30 分钟。 会话超时(20 分钟)和执行超时(60 分钟)并按预期工作。

我还有一个 java-script 函数,它检查用户的空闲时间,如果用户在 20 分钟之前没有采取任何行动,则会出现一条警告消息,即使一个异步请求仍在运行,用户也会自动注销。

有什么方法可以检查异步请求是否仍在运行?如果是,那么我将检查检查空闲时间的 java 脚本代码。

【问题讨论】:

    标签: asp.net c#-4.0


    【解决方案1】:

    您可以使用 JavaScript 计算当前正在运行的页面方法的数量:

    var callsRunning = 0;
    
    function callPageMethod()
    {     
          callsRunning += 1;
          PageMethods.DoSomething(onSucceed, onError);
          return false;
    }   
    function onSucceed(result)
    {
          callsRunning -= 1;
          alert(result);        
    }
    function onError(result)
    {      
          callsRunning -= 1;
    }
    

    因此,您可以随时检查callsRunning > 0 是否仍在等待任何方法。

    【讨论】:

    • 感谢您的快速回复。我相信上面的解决方案对我有用,但是我使用了太多的页面方法,所以这将是非常乏味的工作,因为我需要在每个页面上声明变量“callsRunning”。在整个应用程序中是否有任何常用的方法来利用上述内容?
    • 我建议有一个 MasterPage,每个单独的页面都使用它。查看this page
    • 但是如果我在 MasterPage 中声明“callsRunning”,那么它对于我的应用程序中的所有其他页面都是全局的。因此,如果 page1 将其增加到 3,并且如果我在新选项卡中打开 Page2,那么这里的初始值将是 3。所以我们永远不会在调用运行 = 0 时达到。而且在每个页面和每个页面方法上,我都需要在成功和首字母上增加/减少。
    • 母版页和 javascript 不是这样工作的。生成的合并页面不与其他页面共享 DOM。 JavaScript 在浏览器中运行并且仅在当前页面的范围内。每个结果页面都有一个调用运行实例。
    猜你喜欢
    • 2018-05-29
    • 2015-07-17
    • 2015-10-04
    • 1970-01-01
    • 2020-03-17
    • 2015-04-24
    相关资源
    最近更新 更多