FIX: SOAPClient Sends a Second HTTP Request if ConnectorProperty "Timeout" Value Expires (317732)



The information in this article applies to:

  • Microsoft SOAP Toolkit 2.0

This article was previously published under Q317732

SYMPTOMS

If a SoapClient object sets the "Timeout" ConnectorProperty, and the server cannot respond in the specified "Timeout" value, the SOAP Toolkit 2.0 SoapConnector sends a second SOAP request after the timeout expires.

CAUSE

This is caused by the underlying http library (HttpLib) that the SoapConnector uses.

RESOLUTION

A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next SOAP 3.0 Toolkit that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
   Date         Time   Version      Size             File name
   ------------------------------------------------------------
   11-Feb-2002	      1.2.911.0    118,272 bytes    hlsc10.dll	
   11-Feb-2002	      1.2.911.0    25,088 bytes     wisc10.dll			
				

WORKAROUND

To work around this issue, use one of the following methods:
  • Method 1: Upgrade to the SOAP 3.0 Toolkit, because the SOAP 3.0 Toolkit does not use the http library (HttpLib).
  • Method 2: Delete the hlsc10.dll in a client-to-server scenario.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce the Behavior

  1. Create a Visual Basic 6.0 ActiveX DLL Project.
  2. Insert the following code in a class module that is named SOAPTimeout:
       Option Explicit
    
       Public Function Test() As String    
        On Error Resume Next
        Dim TestObj As Object
        Dim Testi As Long
        
        For Testi = 1 To 1000000  
             Set TestObj = CreateObject("ADODB.Connection")
             Set TestObj = Nothing
        Next
        Test = "Test Complete"
       End Function
     
    					
  3. Generate SOAPTimeoutTest.dll.
  4. Run the Soap Trace Utility (which is included with the SOAP Toolkit) for Formatted Trace at: local port = 8080
  5. Use the WSDL Generator to generate .wsdl and .wsml files.
    • Specify SoapTimeout as the name of the service, and then set the local path to the COM DLL that is generated in the first section.
    • Check the Test Web method so that it is exposed on the site.
    • Set the Listener Uniform Resource Identifier (URI) as follows: http://locahost:8080/SoapTimeout/


  6. Create a Visual Basic 6.0 Standard EXE with the following code:
          Private Sub Form_Load()
    	Dim ClientTest As New MSSOAPLib.SoapClient
    	Dim Str As String
        	ClientTest.ClientProperty("ServerHTTPRequest") = False
        	ClientTest.mssoapinit "http://localhost:8080/SOAPTimeout/SoapTimeout.wsdl"
    	ClientTest.ConnectorProperty("Timeout") = 2000  
    	Str = ClientTest.Test
    	MsgBox Str
          End Sub
    					
  7. Run the Client. The Soap Trace Utility shows that a second request is sent after the timeout interval expires.
If you remove or increase the "Timeout" value, or you install the hotfix, the second request is not sent.

Modification Type:MinorLast Reviewed:10/12/2005
Keywords:kbHotfixServer kbQFE kbbug kbfix kbQFE KB317732