Release Notes > ThingWorx Edge .NET SDK Release Notes
  
ThingWorx Edge .NET SDK Release Notes
The following sections list and describe the new features, enhancements, and the issues fixed in the releases of the ThingWorx Edge .NET SDK in chronological order, from the current release to the oldest release.
.NET SDK Version 5.7.6 (C SDK 2.1.1)
The .NET SDK, version 5.7.6 has been built using the C SDK v.2.1.1, and therefore has many of the important changes in C SDK 2.0.0 through 2.1.1. For more information about the changes to the C SDK, see the release notes for the C SDK in the ThingWorx Edge SDKs and WebSocket-based Edge MicroServer (WS EMS) Help Center. This release resolves the following issues:
ID (SFID)
Description
NSDK-142 (13945849)
.NET SDK file transfer giving duplicate callbacks after shutdown and reset.
After a file transfer (download) was reset and a client application/device were restarted, duplicate callbacks were noticed, resulting in large volumes of logs and a memory issue.
This issue is fixed in this release.
.NET SDK Version 5.7.5 (C SDK 2.1.0)
The .NET SDK, version 5.7.5 has been built using the C SDK v.2.1.0, and therefore has many of the important changes in C SDK 2.0.0 through 2.1.0 For more information about the changes to the C SDK, see the release notes for the C SDK in the ThingWorx Edge SDKs and WebSocket-based Edge MicroServer (WS EMS) Help Center. This release resolves the following issues:
ID (SFID)
Description
NSDK-135 (13927270 and 13950870)
.NET SDK app crashes when invoking GetDirectoryStructure service on the remote thing and a virtual directory is located on C drive and contains file names with spaces.
Spaces in directory and file names that are used in a virtual path were causing the .NET SDK to crash when a GetDirectoryStructure request was made on the ThingWorx platform to an edge device.
This issue is fixed in this release of the .NET SDK.
NSDK-136
Application crashes when browsing remote directories containing remote files.
When calling twDirectory_IterateEntries(), Windows returns an error about corruption surrounding the len variale. As part of an effort to remove strlen() usages from the C SDK, StringCbLength() is now used to safely calculate string length. The third parameter of StringCbLength() is a pointer to a size_t variable to store the length in, but in twDirectory_IterateEntries(), len is defined as an int, resulting in stack corruption.
To resolve this issue, len is a size_t instead of an int.
.NET SDK Version 5.7.4 (C SDK 2.0.5)
The .NET SDK, version 5.7.4 has been built using the C SDK v.2.0.5, and therefore has many of the important changes in C SDK 2.0.0 through 2.0.5 For more information about the changes to the C SDK, see the release notes for the C SDK in the ThingWorx Edge SDKs and WebSocket-based Edge MicroServer (WS EMS) Help Center. This release resolves the following issue:
ID (SFID)
Description
NSDK-127 (13861517)
FIPS .NET SDK does not support OpenSSL or FIPS.
The distribution bundle of the ThingWorx Edge .NET SDK 5.7.1 that had fips in the file name did not contain OpenSSL and FIPS. Instead, it contained axTLS.
This issue is fixed in this release.
* 
ThingWorx .NET SDK 5.7.2 and 5.7.3 were never officially released. Release 5.7.4 contains all the fixes from previous releases. It is built with the latest version of the C SDK, v.2.0.5
.NET SDK Version 5.7.4 (C SDK 2.0.5)
The .NET SDK, version 5.7.4 has been built using the C SDK v.2.0.5, and therefore has many of the important changes in C SDK 2.0.0 through 2.0.5 For more information about the changes to the C SDK, see the release notes for the C SDK in the ThingWorx Edge SDKs and WebSocket-based Edge MicroServer (WS EMS) Help Center. This release resolves the following issue:
ID (SFID)
Description
NSDK-127 (13861517)
FIPS .NET SDK does not support OpenSSL or FIPS.
The distribution bundle of the ThingWorx Edge .NET SDK 5.7.1 that had fips in the file name did not contain OpenSSL and FIPS. Instead, it contained axTLS.
This issue is fixed in this release.
* 
ThingWorx .NET SDK 5.7.2 and 5.7.3 were never officially released. Release 5.7.4 contains all the fixes from previous releases. It is built with the latest version of the C SDK, v.2.0.5
.NET SDK Version 5.7.1 (C SDK 1.5.1)
The .NET SDK, version 5.7.1, has been built using C SDK v.1.5.1, and therefore has many of the important changes from C SDK 1.5.0 and 1.5.1. See the release notes for the C SDK for more information about those changes. It also includes the fixes for v.5.7.0 of the .NET SDK, which are described in the next section. Note that NSDK-94 continues to be a Known Issue in this release.
.NET SDK Version 5.7.0 (C SDK 1.4.1)
ID
Description
Issues Fixed in This Release
NSDK-85
Error Appears in Windows XP OS from C SDK Requiring Remote Device Restart
This issue is fixed in this release.
NSDK-21
Add section to user guide on configuring the SDK to validate server certificates.
The ThingWorx Edge .NET SDK Developer’s Guide, v.5.7.0 contains this new section.
CSDK-14 (formerly EDGE-1964)
The C SDK could not establish a secure WebSocket connection (WSS, SSL) to a ThingWorx server when attempting to connect. This issue has applied to the C SDK 1.3.2 through 1.3.5, .NET SDK 5.6.2 through .5.6.5, WS EMS 5.3.2.x, and iOS SDK 1.0.
CAUSE: Versions of Apache Tomcat 8.0.35 and above have disabled RSA-based ciphers by default due to forward secrecy concerns. (see https://tomcat.apache.org/tomcat-8.0-doc/changelog.html for 8.0.34.). The axTLS libraries used by WS EMS, C SDK, .NET SDK, and iOS SDK supported two encryption ciphers: TLS_RSA_WITH_AES_256_CBC_SHA and TLS_RSA_WITH_AES_128_CBC_SHA. Any application that used SSL for Edge connections if the Tomcat server was upgraded to 8.0.35 or later may have been affected by this change to Tomcat.
With the upgrade to axTLS 2.1.2, this issue is resolved for the C SDK in this release.
* 
The .NET SDK has been rebuilt with C SDK 1.4.1 for this release, so this issue is resolved..
Known Issue
NSDK-94
XXE vulnerability in HttpUtilities LoadXml() method
In versions prior to 4.6 of the .NET Framework, the XmlResolver property of the XMLDocument is not null by default. As a result,XMLDocument is vulnerable to an XML External Entity (XXE) attack. This class is referenced by LoadXml() method of HttpUtilities. To mitigate this vulnerability, refrain from using this method or use .NET Framework 4.6.
This release includes the “new in this release” changes and fixes for issues that were made for the C SDK 1.4.1.
.NET SDK Version 5.6.5 (C SDK 1.3.5 and 1.3.6)
ID
Description
Issues Fixed in This Release
NSDK-61
.NET SDK does not clean up registered properties/services after BIND failure.
The SDK now cleans up registered properties and services if a BIND fails.
Known Issue
EDGE-1964 / CSDK-14
The Edge device (.NET SDK) cannot establish a secure Websocket connection (WSS, SSL) to a ThingWorx server. The error appears as Error 0, Error initializing SSL connection, twWs_Connect: Error restarting socket. Error 0, and/or No compatible ciphers when a .NET SDK device attempts to connect. This issue applies to the C SDK 1.3.2 through 1.3.5, .NET SDK 5.6.2 through 5.6.5, WS EMS 5.3.2 and 5.3.2.1693, and iOS SDK 1.0.
CAUSE: Versions of Apache Tomcat 8.0.35 and above have disabled RSA-based ciphers by default due to forward secrecy concerns. (see https://tomcat.apache.org/tomcat-8.0-doc/changelog.html for 8.0.34.). The axTLS libraries used by WS EMS, C SDK, .NET SDK, and iOS SDK support two encryption ciphers: TLS_RSA_WITH_AES_256_CBC_SHA and TLS_RSA_WITH_AES_128_CBC_SHA. Any application that uses SSL for Edge connections if the Tomcat server is upgraded to 8.0.35 or later may be affected by this change to Tomcat.
WORKAROUNDS:
Downgrade to a version of Tomcat version 8.0.33 or lower.
In the server.xml configuration file of Tomcat, explicitly define a list of ciphers that includes the axTLS ciphers. For an example with a list of ciphers supported in Tomcat version 8.0.36, see https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS245522.
* 
Make sure that any ciphers you use have been validated with any internal security requirements before implementing this workaround in production environment
This release includes updates/fixes that were made for the C SDK 1.3.5 and 1.3.6.
.NET SDK Version 5.6.4 (C SDK 1.3.4)
ID
Description
New in This Release
EDGE-1658
To provide bulk binding for the .NET SDK, the function, bindThings(twList* entityNames), has been added.
EDGE-2025
The bulk binding feature could cause the SDK to attempt to send a message that is larger than the configured maximum message size. When building the bind message, the SDK monitors the message size and returns an error when the message is full. When this error message is detected, the SDK sends the current message and starts a new one.
EDGE-1863 / EDGE-1864
A topic has been added to the .NET SDK documentation that explains how to use the VirtualThing.processPropertyWrite and VirtualThing.processPropertyRead methods to propagate property values that are set on a remote thing on ThingWorx platform to the VirtualThing in your edge application. See the section, “Propagating Changes in Property Values Sent from ThingWorx platform to Edge Devices”, in the ThingWorx Edge .NET SDK Developer’s’ Guide, v.5.6.4 or in the ThingWorx Edge Help Center.
NSDK-41
The .NET SDK is now pinned to a specific C SDK version. The information is written to the version.txt file in the installation directory.
Issues Fixed in This Release
NSDK-22
.NET SDK has an error and crashed without error message in log file.
The underlying issue was in the C SDK. With the new versions of the C libraries that are part of the .NET SDK, this issue is fixed in this release.
NSDK-4
Event subscriptions not working in .NET SDK.
When binding, the call to NotifyPropertyUpdate handler was not correctly processed.
This issue is fixed in this release.
NSDK-1
GetPropertySubscriptions throws exception on duplicate property names.
The .NET SDK uses a dictionary to store the binding information. When it encountered a duplicate entry, it appeared to bail out of the loop that added the entries in the Dictionary, generating error message. The .NET SDK would send back to ThingWorx only those values that were successfully added to the Dictionary.
Resolution — One way to ensure that you do not encounter this issue is to ensure that properties all have UNIQUE source names. However, this issue is now handled on the edge.
Known Issue
EDGE-1964 / CSDK-14
The Edge device (.NET SDK) cannot establish a secure Websocket connection (WSS, SSL) to a ThingWorx server. The error appears as Error 0, Error initializing SSL connection, twWs_Connect: Error restarting socket. Error 0, and/or No compatible ciphers when a .NET SDK device attempts to connect. This issue applies to the C SDK 1.3.2 through 1.3.4, .NET SDK 5.6.2 through 5.6.4, WS EMS 5.3.2, and iOS SDK 1.0.
CAUSE: Versions of Apache Tomcat 8.0.35 and above have disabled RSA-based ciphers by default due to forward secrecy concerns. (see https://tomcat.apache.org/tomcat-8.0-doc/changelog.html for 8.0.34.). The axTLS libraries used by WS EMS, C SDK, .NET SDK, and iOS SDK support two encryption ciphers: TLS_RSA_WITH_AES_256_CBC_SHA and TLS_RSA_WITH_AES_128_CBC_SHA. Any application that uses SSL for Edge connections if the Tomcat server is upgraded to 8.0.35 or later may be affected by this change to Tomcat.
WORKAROUNDS:
Downgrade to a version of Tomcat version 8.0.33 or lower.
In the server.xml configuration file of Tomcat, explicitly define a list of ciphers that includes the axTLS ciphers. For an example with a list of ciphers supported in Tomcat version 8.0.36, see https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS245522.
* 
Make sure that any ciphers you use have been validated with any internal security requirements before implementing this workaround in production environment
This release includes updates/fixes that were made for the C SDK 1.3.4.
.NET SDK Version 5.6.3.582 (C SDK 1.3.3)
ID
Description
Issue Fixed in This Release
EDGE-2089
.NET SDK 5.6.3 did not meet performance expectations. The time required to look up service callbacks does not display the expected improvements.
This 5.6.3.582 release of .NET SDK provides this optimization for look-ups of service callbacks.
Known Issue
EDGE-1964 / CSDK-14
The Edge device (.NET SDK) cannot establish a secure Websocket connection (WSS, SSL) to a ThingWorx server. The error appears as Error 0, Error initializing SSL connection, twWs_Connect: Error restarting socket. Error 0, and/or No compatible ciphers when a .NET SDK device attempts to connect. This issue applies the C SDK 1.3.2 and 1.3.3, .NET SDK 5.6.2 and 5.6.3, WS EMS 5.3.2, and iOS SDK 1.0.
CAUSE: Versions of Apache Tomcat 8.0.35 and above have disabled RSA-based ciphers by default due to forward secrecy concerns. (see https://tomcat.apache.org/tomcat-8.0-doc/changelog.html for 8.0.34.). The axTLS libraries used by WS EMS, C SDK, .NET SDK, and iOS SDK support two encryption ciphers: TLS_RSA_WITH_AES_256_CBC_SHA and TLS_RSA_WITH_AES_128_CBC_SHA. Any application that uses SSL for Edge connections if the Tomcat server is upgraded to 8.0.35 or later may be affected by this change to Tomcat.
WORKAROUNDS:
Downgrade to a version of Tomcat version 8.0.33 or lower.
In the server.xml configuration file of Tomcat, explicitly define a list of ciphers that includes the axTLS ciphers. For an example with a list of ciphers supported in Tomcat version 8.0.36, see https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS245522.
* 
Make sure that any ciphers you use have been validated with any internal security requirements before implementing this workaround in production environment
This release includes updates/fixes that were made for the C SDK 1.3.3.
.NET SDK Version 5.6.3 (C SDK 1.3.3)
ID
Description
Enhancements
EDGE-1863
The ThingWorx Edge .NET SDK Developer’s Guide has been updated to include the processPropertyWrite and processPropertyRead methods of the VirtualThing class.
Issues Fixed in This Release
EDGE-1763
Service performance degrades as number of registered services increases. The ability to index the list of callbacks has been added. Service callback lookups can be made in constant time O(1). In addition, service calls execute in about 200ms, regardless of the number of services that you register.
Known Issue
EDGE-1964 / CSDK-14
The Edge device (.NET SDK) cannot establish a secure Websocket connection (WSS, SSL) to a ThingWorx server. The error appears as Error 0, Error initializing SSL connection, twWs_Connect: Error restarting socket. Error 0, and/or No compatible ciphers when a .NET SDK device attempts to connect. This issue applies to the C SDK 1.3.2 and 1.3.3, .NET SDK 5.6.2 and 5.6.3, WS EMS 5.3.2, and iOS SDK 1.0.
CAUSE: Versions of Apache Tomcat 8.0.35 and above have disabled RSA-based ciphers by default due to forward secrecy concerns. (see https://tomcat.apache.org/tomcat-8.0-doc/changelog.html for 8.0.34.). The axTLS libraries used by WS EMS, C SDK, .NET SDK, and iOS SDK support two encryption ciphers: TLS_RSA_WITH_AES_256_CBC_SHA and TLS_RSA_WITH_AES_128_CBC_SHA. Any application that uses SSL for Edge connections if the Tomcat server is upgraded to 8.0.35 or later may be affected by this change to Tomcat.
WORKAROUNDS:
Downgrade to a version of Tomcat version 8.0.33 or lower.
In the server.xml configuration file of Tomcat, explicitly define a list of ciphers that includes the axTLS ciphers. For an example with a list of ciphers supported in Tomcat version 8.0.36, see https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS245522.
* 
Make sure that any ciphers you use have been validated with any internal security requirements before implementing this workaround in production environment
This release includes updates/fixes that were made for the C SDK 1.3.3.
.NET SDK Version 5.6.2 (C SDK 1.3.2)
ID
Description
Enhancements
EDGE-991
The .NET SDK is signed using SHA-256.
EDGE-918
The ThingWorx Edge .NET SDK Developer’s Guide has been revised to include that a service and its corresponding method must have the same name.
EDGE-659
The .NET SDK now includes a solution (.sln) file for the SteamSensor example as part of the release bundle. For more information about this example, see the ThingWorx Edge .NET SDK Developer’s Guide for this release.
EDGE-591
The .NET SDK sample SteamSensor project now includes configuration parameters to make it easier to connect to a ThingWorx platform that requires SSL. For more information, see the configuration file for this project and the ThingWorx Edge .NET SDK Developer’s Guide.
Issues Fixed in This Release
EDGE-1211
The VirtualThing.setProperty method now sets the timestamp to the current time.
EDGE-1213
A new FileThingVirtualThing that uses the non-identifier constructor has been added. If you now pass in at least one virtual directory, call setIdentifier, and bind the FileTransferVirtualThing to the client, the client will bind using the identifier.
This release includes updates/fixes that were made for the C SDK 1.3.2.
.NET SDK Version 5.6.1 (C SDK 1.3.1)
ID
Description
Enhancements
EDGE-841
The .NET SDK assemblies now have a Digital Signature and Strong Names.
EDGE-836
The ThingWorx Edge .NET SDK Developer’s Guide has been revised for this release.
Issues Fixed in This Release
EDGE-810
Null inputs to Services are now handled properly. Null value type inputs will be set to an appropriate default value (e.g., 0, "", etc.), while null reference type inputs will remain null.
EDGE-639
Using SetImageValue() for a ValueCollection Object resulted in an exception during run time of the .NET SDK. The default maximum size of a message is 64KB. The message being sent contained an image file of over 500KB, which caused the maximum size to be exceeded, thereby generating the exception. The resolution to this issue was to change the maximum size of messages for the instance of the ClientConfigurator. For example:
config.MaxMessageSize = 72500;
EDGE-590Case 12638289
ADO client cannot connect when ThingWorx platform server clientAuth=”true”
.
This release includes configuration options in the AdoThing.config file for configuring client certificate file or client key file for client authentication.
This release includes updates/fixes that were made for the C SDK 1.3.1.
.NET SDK Version 5.6.0 (C SDK 1.3.0)
New Features and Fixes
The API documents have been updated and include generated XML for use in Microsoft Visual Studio.
The .NET SDK Developer's Guide was updated for this release.
The type of a Windows Service project has changed from WinExe to Exe (Console App).
An issue concerning binding and the destructor for FileTransferVirtualThing has been fixed.
The SDK now supports configuration of OpenSSL FIPS.
The size of cipher keys has been updated.
The method, disableEncryption, has been added to the ConnectedThingClient class.
Thread creation can now occur while callbacks are handled.
This release includes additional error checking for the server URI that a user specified.
The release adds locking for API initialization.
The data types of the .NET SDK are now synchronized with the data types of the C SDK.
This release updates the configuration of logging.
The file, app.config, has been updated.
The check of the value of the isConnected parameter before subscribed properties are updated has been removed.
You can now configure the maximum number of threads that the SDK uses to handle messages.
This release includes updates/fixes that were made for the C SDK 1.3.0.
.NET SDK Version 5.5.0
New Features and Improvements
This release adds support for tunneling.
The .NET Developer's Guide has been added to the distribution bundle for the SDK.
This release adds support for NTLM proxy servers.
This release adds support for SHA-256 certificates.
The SDK fully supports validation of certificates.
The SDK now includes callbacks for authentication events.
The SDK now includes callbacks for bind events.
The reliability of connections has been improved.
* 
This version of the .NET SDK has significant changes to the underlying connectivity library. Although it is backward compatible, be sure to re-test your client application.
The way that the .NET SDK manages client objects (ConnectedThingClienthas changed in this version. The framework only supports a single client object at a time. Although more than one client can be instantiated, the following methods operate on ALL instantiated client objects:
connect
disconnect
shutdown
isConnected
isShutdown
isConnectionInProgress
stopConnectionAttempt