SharePoint 2013:SPLongOperation超时

时间:2014-02-13 12:36:16

标签: c# sharepoint timeout sharepoint-2013

目前我在SharePoint 2013中遇到SPLongOperation的问题。我有一些自定义逻辑需要至少15分钟才能处理,因此我使用SPLongOperation确保它在6分钟后不会超时。在过去,这段代码适用于SharePoint 2010.问题是代码执行在6分钟后完全停止。附加调试器后它不会超时,因此SPLongOperation块会被忽略或无法正常工作。我用来调用SPLongOperation的代码如下:

using (SPLongOperation operation = new SPLongOperation(Page))
{
    try
    { 
        operation.LeadingHTML = html; //adding some custom html...
        operation.Begin();

        // Business Logic
    }
    finally
    {
        operation.End("/page.aspx", SPRedirectFlags.RelativeToLayoutsPage, Context, string.Empty);
    }
}

我在使用这段代码的几台机器上看到的行为是,在6分钟后,在ULS中出现以下异常时发生超时: System.Web.HttpException:请求超时。有谁知道可能是什么问题?我正在使用安装了October CU的SharePoint 2013。我还使用while(true)语句测试了此块,以确保业务逻辑不会导致问题。

2 个答案:

答案 0 :(得分:2)

也有这个问题,发现这种方法,在创建SPLongOp对象之前定义页面的超时:

Page.Server.ScriptTimeout = 3600; // specify the timeout to 3600 seconds
 using (SPLongOperation operation = new SPLongOperation ( this .page))
 {
 }

来源:http://shaharpan.wordpress.com/2014/11/20/splongoperation-thread-was-being-aborted-error-in-sharepoint-2013/

托马斯

答案 1 :(得分:0)

SPLongOperation在执行时保持客户端和服务器之间的连接打开。它的目的是告知用户一切正常,但需要一点时间(2-3分钟)才能完成任何要完成的事情。

因此,如果您需要运行一个非常长的过程(例如,持续1小时),您需要使用其他方式,例如计时器作业。