2010-02-19 54 views
3

我有一个问题,我不能完全找到答案......页面渲染超时会发生什么?

如果你有一个ASP.Net页面,需要更长的时间比请求超时渲染上发生了什么过程? Web服务是否会中止它?

假设我正在将XML写入ASP.Net页面中的响应流,并超时调用我的GenerateXML方法。我的方法调用会发生什么?它是否完成,但Web服务器报告超时?还是中止?

我大概可以写一个测试来看看我自己的结果,但我觉得可能还有更多。

回答

1

让我们来澄清一下: 您的问题(1)会话超时(2)请求超时至少有两个超时。最常见的情况是请求超时 - 因为客户端不想在服务器活动之前等待几分钟。并且像往常一样请求生命期比会话少。在这种情况下,服务器以通常的方式终止请求 - 通过提高ThreadAbortException。即使一切正常,也会引发此异常,只是为了终止请求处理。

当会话结束时 - 客户端甚至不应该知道它。只有当你有自动化客户端将被重定向到登录页面。但服务器代码可能会丢失会话中存储的数据。

+0

那么我的页面请求(因此GenerateXML方法)正在执行的线程被ThreadAbort取下呢?处理这种情况的最佳方法是什么?我正在生成然后缓存XML,但如果它总是在第一次生成时超时,那么它永远不会被缓存。 – Jeff 2010-02-19 22:41:09

+1

@Jeff:我总是讨厌像这样得到答案,但是如果你的页面渲染器需要*那么长,问题在于页面渲染,而不是IIS处理会话管理的方式,所以这是你应该改进的地方...... – Treb 2010-02-19 22:50:47

+0

我想的很多。这意味着更多的工作来解决这个问题。我只需要考虑页面请求过程来证明自己。 – Jeff 2010-02-19 22:56:25

0

由于渲染过程不知道会话超时本身,我的假设是渲染完成没有任何问题。只是当用户在渲染的页面上执行一个操作并将其发送回服务器时,tiemout才能实现。

我现在无法通过任何证据来支持这一点,但对我而言,这是最合乎逻辑的行为。除此之外,在渲染过程中需要额外的超时检查,这会花费CPU时间(=金钱),但不会以任何方式提高会话安全性。