We have a web application which does some computing and returns a file to the client. When the computing takes less then 5 minutes everything works fine on IE and Chrome and we get the file but if computing takes more than 5 minutes IE times-out with "Internet Explorer cannot display the webpage" message where as Chrome keeps running and eventually gets the file from the server.
I've tried changing registry settings like KeepAliveTimeout, ReceiveTimeout, ServerInfoTimeout of WinInet but it didn't help. Clicking the Diagnose Connection Problems button shows "Windows received an HTTPerror message: 403 (forbidden) from " message which I think is because it tries to again access the site without credentials and fails. When using fiddler the request terminates with 504 status and show this message "ReadResponse() failed: The server did not return a response for this request." Interestingly I've once observed that even Chrome times-out if Fiddler is running (haven't verified this by re-running though.)
This is an ASP.Net web application using MVC framework.
I've spent considerable amount of time but haven't been able to find a solution for this. Any useful pointers would really be appreciated.
From KB181050
You can usually break down long processes into smaller pieces. Or, the server can return status data to update users about the process. In addition, you can create a long server process that has a messages-based or asynchronous approach so that it returns immediately to the user after the job is submitted, and then notifies the user after the long process is finished.
In other words, create a <div> and fill that <div> immediately with a "processing" value after the request has been accepted by the server. Then, use ajax or javascript to update that same <div> with the result whenever you're finished with processing.
Related
We have a single page web application. One of the functions of the application is to supervise the connection path from the client back to the server. This is implemented with a periodic ajax http request in javascript to the server every 60 seconds. This request acts as a heartbeat.
After a session is started, the server looks for that heartbeat. If it fails to receive a heartbeat request after a reasonable amount of time, it takes specific action.
The client also looks for a response to that heartbeat request. If it fails to receive a response after a reasonable amount of time, it displays a message on the screen via javascript.
We are getting reports from the field where a Chrome version of Edge is failing. Communication between the client and server is apparently failing. The server is seeing those heartbeat requests cease – and taking that specific action. However, the client is not taking the expected action on its side. It’s not displaying the message indicating a failed heartbeat request. It’s almost appears as though the javascript stopped running altogether.
The thing is, though… The customer has reported that if they disable automatic updates to Microsoft Edge the application runs fine. If the checking of updates is allowed to occur, the application eventually fails as described above. Note that this is apparently happening when Edge is just checking for updates - it's already up to date.
Updates are being turned off using several guid-named registry keys at [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\EdgeUpdate].
Any thoughts?
Basically this question asked multiple time but in my point, I can't able to clear out those so I want your side help for this error.
My app was complete with all decided features but it was giving me following error multiple time in log.
App is totally custom web server based and I was using GoDaddy server for placing admin panel content and for webservices.
In all loading pages , app has to call different web services. In this its work normally with good response but some time it will take so much time in loading page details and I got above kind of error log in XCode.
If next time, I call same service then its respond me quickly but some time, it creating problem for me.
From coding side, I am very much sure its just delay in server response because process become stuck in waiting of server response.
I am kind of getting lost with this one, we are using Tomcat7 on Windows 2008 server which is running behind IIS. The application framework is Struts2 and we have kept logs in the first and last line of a struts action method. Also, we have turned on tomcat access log valve. The problem,
1) The logs in the action class method states that the request enter and leave the method in a few milliseconds, post completing the entire processing.
2) The tomcat access valve logs show the same request taking more then a 10 minutes.
Where would the response be getting stuck in this case. No clue on where to start debugging, as this happens completely randomly.
I have two delphi clients of one ASMX service. One client is normal desktop application and other is Outlook add-in.
Everything works fine (SOAP calls to ASMX service) on my PC. But on one of my costumers have problems with SOAP calls within Outlook add-in, and at the same time desktop application works as expected on the same machine.
The problem with SOAP call within Outlook add-in is error "XML document must have a top level element". Reason of this error is empty response of call. Take a look at logs:
8/7/2013-1:12:29 PM Response:
8/7/2013-1:12:29 PM XML document must have a top level element.
Line: 0
XMLDoc.TXMLDocument.LoadData + $2AA
XMLDoc.TXMLDocument.SetActive + $A8
XMLDoc.TXMLDocument.LoadFromStream + $29
Rio.TRIO.Generic + $70F
Response stream is retrieved in HttpRio AfterExecute method using call
fResponse.LoadFromStream(Response);
The question is: what is the reason of this error, how can one client on the same machine work fine and other not? what can I do to reproduce, diagnose this situation?
P.S. I know that it would be great to have sniffed http packets, but I don't have access to the costumer's PC to run http sniffer.
Your log doesn't show the timestamp of the original request. If the time difference happens to fall on a 30 or 60 second boundary, then this is almost certainly a timeout situation. i.e. no response was ever received. If it happens right away, then your request likely is not getting out, and is being blocked by a firewall.
I am trying to use jQuery's .ajax functionality to make a progress bar.
A request is submited via .ajax, which starts a long running process. Once submited another .ajax request is called on an interval which checks the progress of this process. Then a progress meter is updated using this information.
However, the progress .ajax call only returns once the long running process has completed. Its like its being blocked by the initial request.
The weird thing is this process works fine on dev but is failing on the deployment server. I am running on IIS using ASP.Net MVC.
Update: Apparently, it is browser related because it is working fine on IE 7 but is not working on IE 8. This is strange because IE 8 allows up to 6 connections on broadband where IE 7 only allows 2 requests per domain.
Update2: I think it's a local issue because it appears to be working fine on another IE 8 machine.
The server will only run one page at a time from each user. When you send the requests to get the progress status, they will be queued.
The solution is to make the page that returns the status sessionless, using EnableSessionState="false" in the #Page directive. That way it's not associated with any user, so the request isn't queued.
This of course means that you can't use session state to communicate the progress state from the thread running the process to the thread getting the status. You have to use a different way of keeping track of running processes and send some identifier along with the requests that gets the status so that you know which user it came from.
Some browsers (in particular, IE) only allows two requests to the same domain at the same time. If there are any other requests happening at the same time, then you might run into this limitation. One way around it is to have a few different aliases for the domain (some sites use "www1.example.com" and "www2.example.com", etc)
You should be able to use Firebug or Fiddler to determine how many requests are in progress, etc.
Create an Asynchronus handler (IHttpAsyncHandler) for your second ajax request.
use any parameter required via the .ashx querystring in order to process what you want because the HttpContext won't have what you'll need. You barely will have access to the Application object.
Behind the scenes ASP.NET will create for you a thread from the CLR pool, not the application pool, so You'll have an extra performance gain with IHttpAsyncHandler