【问题标题】:on_click event and timeout serveron_click 事件和超时服务器
【发布时间】:2014-03-20 16:42:07
【问题描述】:

上下文: 我目前正在我公司的一个网站/wep 应用程序上工作,该应用程序包含一个用于向某些用户发送大约 280 封电子邮件的页面。

在测试服务器上一切正常,但在生产服务器上,我们在函数中间出现超时(发送所有内容大约需要 5 分钟) 有些用户收到了邮件,有些则没有。

在测试服务器中,一切正常,我是收到所有邮件的人,没有错误,没有异常,没有超时。

通过查看我们的另一个网站,它使用几乎相同的代码具有相同的功能,我在 PageLoad 的开头看到了这一点:Server.ScriptTimeout = 600

问题:

我的发送邮件功能如下所示:

onclick()
{
    foreach()
    {
        sendmail()
    }
}

由于 foreach 完全迭代大约需要 5 分钟,按钮的 On_click 事件是否可能触发超时?

感谢您的帮助

注意:这是一个带有confirmMessage 的自定义按钮,它会阻止页面,直到事件clic 结束。

注 2:我在代码中看不到任何问题,因为重要的发送部分被复制到我们的工作应用程序 1 上,我也尝试了所有代码,同时只是评论 message.send() 函数并且没有根本问题。 这可能是我们在数据库中的邮件地址的问题,但除非我发送真实邮件,否则我无法测试它们,而且我不想发送真实邮件作为测试:)

【问题讨论】:

  • 这么长的客户端脚本需要这样做吗? (是的,如果帖子是同步的,超时可能是原因)。你为什么不收集所有东西,用 AJAX 发送到服务器,然后在完成后得到响应(所有异步)。也可以看看this post
  • 这个页面没有长的客户端脚本,或者只是javascripts中的一些显示功能。我不认为使用 ajax 会改变我的情况。所有都是从后面的代码执行的,所以直接在服务器中执行。创建电子邮件接收者列表并创建所有邮件的功能需要大约 1 秒的时间来处理,然后它是迭代这个列表并为每次迭代发送 1 封电子邮件的函数,这需要花费大量时间,也在代码隐藏中。

标签: c# asp.net button timeout


【解决方案1】:

是的,OnClick 事件可以超时。

IIS 的默认超时时间为 110 秒(请参阅MSDN doc)。您可以使用 <httpRuntime executionTimeout = "HH:MM:SS" /> 更改 web.config 中的最大 executionTimeout

在调试时,executionTimeout 属性不会被应用。这就是您在开发函数时没有发现问题的原因。

如果您使用 Ajax(通过 ScriptManager)调用您的函数,您可以使用 AsyncPostBacTimeout 属性设置不同的最大执行时间。

【讨论】:

  • 您好,看来超时是问题所在。我只是简单地添加了这个著名的 Server.ScriptTimeout = 600 并且问题没有出现在上次测试的服务器上。这是一个每月使用一次的功能(作为用户的邮件提醒)让我们看看下个月我是否幸运或问题是否解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多