2010-05-26 164 views
18

我有一个ASP.NET Web应用程序,我无法修改(我只有二进制文件)。这个应用程序连接到一个Web服务,似乎连接从客户端(我的Web应用程序)关闭。我已经增加了目标服务器的machine.config中的“executionTimeout”,但是我的web应用似乎在等待一段时间后仍然停止。如何增加Web服务请求的超时时间?

有没有办法通过简单地修改web.config来增加我的web应用程序的超时时间?正如我所说...我不能修改代码中的超时,所以我唯一的选择是通过配置文件。

谢谢!

+0

什么样的网络服务? ASP.NET/ASMX或WCF? ASMX通常在代码中处理,除非你已经专门做了一些事情来指定配置中的超时时间; WCF是几乎所有的配置.... – 2010-05-26 16:07:16

+0

远程Web服务确实是一个ASP.NET ASMX Web服务。正如我之前提到的,我无法更改我的应用程序中的代码(因为我只有二进制文件)。 – sachaa 2010-05-26 16:13:43

+0

你有配置文件吗? – Nix 2010-05-26 16:31:47

回答

24

试试这是否适合你。

首先,您需要增加httpRuntime元素的executionTimeout属性的超时时间。请注意,这在Seconds中提到,与会话超时等其他超时属性不同。

<httpRuntime 
    executionTimeout="36000" 

而且,该属性才会生效,当你编译元素的debug属性设置为false。这也在您提到的MSDN链接中指定。像,

<compilation 
    debug="false" 
../> 

但是,这与会话超时一起工作。是的,如果会话超时,则会引发错误。并且它不会等待executionTimeout值生效。所以您还需要将会话超时设置为更高的值。并注意这是在几分钟内。这看起来像,

<sessionState 
    mode="InProc" 
    timeout="360" 
    ... 
    /> 

并注意所有这一切将被AppPool回收过程覆盖。因此您需要将网站使用的Apppool的Idle Timeout值设置为与会话超时相同/更高的值。

我在这里找到http://www.eggheadcafe.com/community/aspnet/17/10111748/how-can-we-increase-the-t.aspx

+0

我有点惊讶,会话可能会在该会话中的请求正在执行时超时。 – 2010-06-04 22:07:51

+0

顺便说一下,如果你设置debug为false,你也可以在VS2008“dummy IIS”上测试它。 – daitangio 2012-10-09 13:31:02

+2

36000秒= 600分 – martijn 2015-03-09 12:07:39

4

Web应用程序的默认的超时时间为90秒,这是通常足以满足一般用途更多。注意超时来自哪里很重要。它是来自页面本身还是页面中引起它的东西?无论哪种情况,看起来“页面”都超时了。

我偶然发现了这个问题,因为我的页面也超时了。发现异常来自SQL(读取实际的错误),所以它确实是SQL问题。一旦我知道了,我可以轻松修复它。

+0

我为此+1了,因为年轻的开发者往往会直接跑到超时泵。实际上,像Regex或SQL Query这样的大量调用不使用索引字段或其他东西是问题。总是首先假设Timout足够长,并且它正在运行,因为可以在代码中进行优化。只有作为一个受过教育的设计决策,执行时间才会增加。 – Suamere 2014-02-11 04:19:14

+0

我的超时时间是由一位同事写的花了1分43秒的查询造成的。有很多复杂的小节和从我选择的选择,我不敢碰它。但是,我将一个子句拉入临时表中,并在临时表上运行了LEFT(,LEN(REPLACE(....)))查询,而不是查询的子条款。然后我将查询加入临时表。执行时间:最多2秒。花了大约半个小时。 [吹到手指上]。 – Resource 2015-09-21 15:44:00