error: The operation has timed-out (executionTimeout?)

J

Jim Underwood

I am having a problem with my web page timng out while retrieving a long
runnign report (90-120 seconds. I have tried modifying several settings in
various places and cannot get it to run for more than 90 seconds.

I am running VS.Net and the app is ASP.Net, written using VB.Net. The app
calls an asp.Net web service to retrieve the report. Both the web site and
the web service are running locally on my PC.

I have tried modifying the executionTimeout setting in Web.Config for both
the site and the web service, and I have also modified the executionTimeout
setting in machine.config. In all cases the value is set to 300 (seconds).

..Net Version is 1.1.4322.2032.

I also tried modifying my web site to timeout in 300 seconds using
Server.ScriptTimeout = 300
with no effect.

Both the web site and the web service have been compiled as "release", and
not as "debug".

If anyone can provide any suggestions, I would very much apreciate it.

Below are sections of each of my config files.

System.web settings for My web site web.config
<system.web>
<compilation defaultLanguage="vb" debug="false" />
<httpRuntime executionTimeout="300" maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100"
enableVersionHeader="true"/>
.....
</system.web>

System.web settings for My web service web.config
<system.web>
<compilation defaultLanguage="vb" debug="false" />
<httpRuntime executionTimeout="300" maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100"
enableVersionHeader="true"/>
.....
</system.web>

System.web settings from machine.config
<system.web>
<httpRuntime executionTimeout="300" maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100"
enableVersionHeader="true"/>
<compilation debug="false" explicit="true" defaultLanguage="vb">
...
</system.web>
 
C

Chris Fulstow

Hi Jim,

Can you provide the error message you're getting?
It could be a timeout from your database, database connection, or
command object.

HTH,

Chris
 
B

bruce barker \(sqlwork.com\)

the webservice call can also timeout. you need to set its timeout also.

-- bruce (sqlwork.com)
 
J

Jim Underwood

The operation has timed-out.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Net.WebException: The operation has timed-out.

Source Error:


An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.


Stack Trace:


[WebException: The operation has timed-out.]
System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest
request) +58

System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebReques
t request) +5
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters) +183
ReportDistribution.CrystalWeb.crystal.GetReport(String strReportName,
String strLogin, String strPassword, String strDatabase, String strServer,
String[] colParams, String[] colValues, String strReport, String strType)
+173
ReportDistribution.RunReport.Button1_Click(Object sender, EventArgs e)
+229
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePo
stBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292
 
J

Jim Underwood

I set the timeout on the machine.config, and the web.config for both the web
site and the web service that it is calling.

And I restarted IIS, and then rebooted when that didn't work.

Still, the request times out after 90 seconds.

Any ideas?
 
J

Jim Underwood

Are you saying I need to set the web service timeout in the calling
application?
 
J

Jim Underwood

Isn't Command.Timeout for database connections? I am dealing with Crystal
reports DLLs that run reports and return a file to the web service, which
returns them to my web app. The database connections do not appear to be a
problem, although I am nto ruling anythign at just yet.

I have set my Webservice.Timeout=300000 (milliseconds I think, since 300
timed out instantly) in the code that calls the web service, and now I am
getting an error at 5 minutes instead of 90 seconds. From what can see it
seems to be working as I want it, but more testing is needed. I am
purposely sending bad criteria to make the report run for a longer period,
so I can see what effect the parameters have.

Once I figure out just what makes the difference I'll post the solution
here. In the mean time, any additional advice is apreciated.
 
J

Jeff Dillon

Um, no connection timeout is for database connections timeout. Command
timeout is for sql command timouts, which is what you are experiencing.

When you run the query in SQL Analyzer, how long does it take? Of course the
the shortest timeout, the Webservice timeout or command timeout, will happen
first. If your command takes longer than the webservice timeout, you'll get
that error. Database connections always happen very fast, it's the queries
(commands) that can take awhile.

First, you need to fix your SQL!

Jeff
 
J

Jim Underwood

Thanks to Bruce, I think I have resolved the issue. Essentially, I needed
three settings.

First, I needed to set the executionTimeout in the web.config for my web
app, as well as the web service it was calling. I think I could also have
changed only the machine.config since these are on the same box, but that is
undesirable since it would affect every web app on the box.

Here is the setting I added to each web.config file, within the system.web
section:

<httpRuntime executionTimeout="300" />

I also had to add a line to my code where I call the web service, since
there is a timeout on the client side (in this case my web app is the client
of the web service) of this as well.

MyRepWeb is the name of my web service object. I set this just after
instantiating the object, just before calling the method to retrieve the
report file.

MyRepWeb.Timeout = 3000000

Thanks all for the suggestions.
 
J

Jim Underwood

Actually, there was no SQL timeout issue in this case, and when I said
connection, I meant the SQL command whcih runs over the connection. The web
service was calling Crystal Reports behind the scenes, and it is Crystal
that is taking so long. The actual SQL executes in seconds, but it takes
over a minute to send all of the data (400,000 plus rows) across the
network, then crystal has apply formulas and summarize the results. I am
pretty sure I can rewrite this report to return results much faster (under
30 seconds anyway) by doing some of the summarization on the database.
However, since I know we will end up with reports that take over 90 seconds
to run, I needed to insure that we can accomodate them, in addition to
fixing the performance of this particular report. By the way, it is a
report written by a business user, not by me, but it will be made more
efficient before it hits production. After it is rewritten those 400,000
rows should be summarized into 2,000 rows with about the same execution
time. but saving netowrk traffic, memory, and CPU cycles on the crystal end.

Since Crystal manages the SQL connections on its own, I didn't have to worry
abotu that at all, but I did have to worry about the web service which was
quiting the request before crystal completed the report. I could actually
watch the report files get saved to disk seconds after the page timed out.

In the end, I had to set executionTimeout in both my web site and the web
service which it was calling, as well as set the webservice.timeout in my
code before I called it. I had problems with my web site timing out, the
web service timing out, then my web site timing out it's own request to the
web service. Now I am able to run a report that completes in under 5
minutes (yes, still a long time, I know), and I know what I can do in the
future if I run into this problem again.

Anyway, thanks for the suggestions. Although the solution was (in part)
different then you suggested, your advice was right on the money.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top