我已经遇到this thread了,但我可能需要其他的东西来处理我的情况。设置控制器动作超时
我有一个返回ViewResult
的作用,这是由客户端的$.post()
的JavaScript调用:
var link = 'GetFoo?fooBar=' + fooBar;
var jqxhr = $.post(link, function (response) {
$('#myDiv').replaceWith(response);
});
控制器:
public ViewResult GetFoo(String fooBar)
{
if (Request.IsAjaxRequest())
{
// perform a ridiculously long task (~12 minutes)
// algorithm: 1) download files from the Azure blob storage
// 2) update each file
// 3) reupload to blob storage
// 4) return a list of URIs to be displayed to the UI
return View("MyFooView", data);
}
throw new InvalidOperationException();
}
正如评论暗示,内部运行有很长的任务e控制器。 (这是一个文档生成模块,它将PDF上传到Azure blob存储并将其链接返回到视图。)
这在我的开发机器中工作正常,但是当它在Azure生产中生效时环境,它超时。我在各处都输入了大量的日志条目,事实证明,它能够上载文档并返回到控制器(即它到达上面的控制器返回语句)。但是,当模型数据返回到视图时,客户端脚本不会回叫(即div
内容不会被结果替换)。
有没有办法以某种方式延长呼叫的超时?在我的(不安全的)本地环境中复制是很困难的,所以最终的修复将会有所帮助。
如果我在GetFoo()
方法上使用属性[AsyncTimeout(3600)]
,则此操作永远不会从UI调用。
任何建议将不胜感激。
这很有趣。我会尝试,如果'Server.ScriptTimeout'将无法正常工作。谢谢。 – 2011-06-01 01:34:33
你有这个ajax-polling-passing-id技术的例子吗?我试图弄清楚它在我的情况下会如何工作。 – 2011-06-02 08:48:37
好的,我添加了一个相当广泛的例子。它不会按原样运行,但它应该足以为您提供一个起点。 – knightpfhor 2011-06-02 20:54:24