HttpWebRequest timeout not working

%3CLINGO-SUB%20id%3D%22lingo-sub-2944064%22%20slang%3D%22en-US%22%3EHttpWebRequest%20timeout%20not%20working%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2944064%22%20slang%3D%22en-US%22%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWhen%20I%20disconnect%20the%20ethernet%2C%20the%20request%20just%20hangs.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HttpWebRequest%20request%20%3D%20(HttpWebRequest%20)WebRequest.Create(WebAddressPreAmble%20%2B%20WebAddress%20%2B%20WebAddressQuery)%3B%20%2F%2F%20Create(sQuery)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20request.Credentials%20%3D%20CredentialCache.DefaultCredentials%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20request.Timeout%20%3D%2010000%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20request.ReadWriteTimeout%20%3D%201000%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Get%20the%20response.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20HttpWebResponse%20response%20%3D%20(HttpWebResponse)request.GetResponse()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Display%20the%20status.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(response.StatusDescription.Equals(%22OK%22))%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2944064%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EWeb%20API%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2954288%22%20slang%3D%22en-US%22%3ERe%3A%20HttpWebRequest%20timeout%20not%20working%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2954288%22%20slang%3D%22en-US%22%3EI%20recommend%20implementing%20a%20proper%20timeout%20handler%20in%20the%20HttpClient%2C%20currently%2C%20it%20throws%20a%20TaskCanceledException%20as%20the%20task%20gets%20cancelled%20and%20if%20awaited%20it%20gets%20thrown%20in%20the%20background%20via%20TaskSchedulerOnUnobservedTaskException.%3CBR%20%2F%3E%3CBR%20%2F%3EI%20implemented%20a%20version%20of%20this%20and%20it%20works%20for%20out%20apps%2C%20%3CA%20href%3D%22https%3A%2F%2Fthomaslevesque.com%2F2018%2F02%2F25%2Fbetter-timeout-handling-with-httpclient%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fthomaslevesque.com%2F2018%2F02%2F25%2Fbetter-timeout-handling-with-httpclient%2F%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3EHTH%3C%2FLINGO-BODY%3E
Occasional Visitor

 

When I disconnect the ethernet, the request just hangs.

 

 

 

                    HttpWebRequest request = (HttpWebRequest )WebRequest.Create(WebAddressPreAmble + WebAddress + WebAddressQuery); // Create(sQuery);
                    request.Credentials = CredentialCache.DefaultCredentials;
                    request.Timeout = 10000;
                    request.ReadWriteTimeout = 1000;
                    // Get the response.
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    // Display the status.
                    if (response.StatusDescription.Equals("OK"))

 

 

1 Reply
You have no exception handling so it might be throwing an error and the code hanging elsewhere.

HttpWebRequest can return a WebException which is not caught as a normal exception. Also, when using external resources you should always have try/catch blocks.

try
{
// web request code
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.Timeout)
{
// handle timeout
}
else throw; // optional
}
catch (Exception ex)
{
// handle exception
}

Some links of the above:
https://docs.microsoft.com/en-us/dotnet/api/system.net.webexceptionstatus?view=net-5.0
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/handling-errors