目前我在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)语句测试了此块,以确保业务逻辑不会导致问题。
答案 0 :(得分:2)
也有这个问题,发现这种方法,在创建SPLongOp对象之前定义页面的超时:
Page.Server.ScriptTimeout = 3600; // specify the timeout to 3600 seconds
using (SPLongOperation operation = new SPLongOperation ( this .page))
{
}
托马斯
答案 1 :(得分:0)
SPLongOperation在执行时保持客户端和服务器之间的连接打开。它的目的是告知用户一切正常,但需要一点时间(2-3分钟)才能完成任何要完成的事情。
因此,如果您需要运行一个非常长的过程(例如,持续1小时),您需要使用其他方式,例如计时器作业。