An embedded device is using the Microsoft .NET Compact Framework 2.0 or the .NET Compact Framework 3.5. When you run an application to send HTTPS Web requests to a server in the device, a System.Net.WebException occurs. Additionally, you receive an error message that resembles the following:
Unable to read data from the transport connection. System.Net.Sockets.SocketException: Unknown error (0x0).
This problem occurs because the server sends an empty encryption packet to the device during the secure communication. The .NET Compact Framework runtime treats such empty packets as a signal to end the connection.
A supported hotfix is now available from Microsoft. However, it is intended to correct only the problem that this article describes. Apply it only to systems that are experiencing this specific problem.
To resolve this problem, contact Microsoft Customer Support Services to obtain the hotfix. For a complete list of Microsoft Customer Support Services telephone 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 usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.
There are no prerequisites to install this hotfix.
You do not have to restart the computer after you apply this hotfix.
Hotfix replacement information
This hotfix does not replace any other hotfixes.
The English version of this hotfix has the file attributes (or later file attributes) 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 item in Control Panel.
To work around this problem, use one of the following methods:
Do not use the Secure Socket Layer (SSL) mechanism to make the Web request.
Reconfigure the server to avoid generating empty encryption packets.
Build a device-side Web proxy that calls the Security Support Provider Interface (SSPI) functions directly, and then set your managed application calls into the proxy.
Note The proxy consumes empty packets and re-encrypts for the managed application. This way, the application does not receive empty encryption packets.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
The System.Net.WebException occurs for many reasons. The hotfix that this article describes only resolves the situation that is caused by the empty encryption packets. Empty encryption packets may be generated depending on the configuration on the server. To determine whether the server generates empty encryption packets, you can run the empty SSL packet detector against the Web server.
For more information about the empty SSL packet detector, visit the following Microsoft Developer Network (MSDN) Web site: