Qlik Sense .NET SDK Release Notes
v16.4.0
- SCHEMA: API endpoints generated based on engine version 12.1678.0 (Qlik Sense May 2023)
- NEW FEATURE: Added property
AppField.DimensionInfo
. - BUGFIX: Fixed bug that made it impossible to reestablish change notification event triggers for qix objects that had been previously disposed.
v16.3.0
- SCHEMA: API endpoints generated based on engine version 12.1581.1 (Qlik Sense February 2023)
- NEW FEATURE: Added setting
RpcConnection.MaxJsonDepth
that controls allowed max nest depth for JSON structures. Default is 128.
v16.2.0
- SCHEMA: API endpoints generated based on engine version 12.1501.1 (Qlik Sense November 2022)
- NEW FEATURE: The class
Qlik.Engine.Blob
now provides an interfaces for accessing Base64 encoded engine data. - NEW FEATURE: Added property
GenericLocation.CustomUserAgent
to configure an HTTP user-agent header to use for application. - BUGFIX: Fixed deserialization issue with
Qlik.Engine.Blob
structures. - DEPRECATED: Deprecated enum type
DrawText
. Legacy enum type not relevant for Qlik Sense.
v16.1.0
- SCHEMA: API endpoints generated based on engine version 12.1386.1 (Qlik Sense August 2022)
- NEW FEATURE: Added
AppAsync
overload version that acceptsAsyncHandle
argument to classQlik.Engine.Location
andQlik.Engine.QcsLocation
. - NEW FEATURE: Added
AppAsync
overload version that acceptsonConnectionEstablished
argument to classQlik.Engine.QcsLocation
. - NEW FEATURE: Added location configuration method
QcsLocation.AsExistingSession
.
v16.0.2
- BUGFIX: Fixed issue with enumeration literals accidentally getting alphabetically sorted resulting in incorrect default values.
v16.0.1
- SCHEMA: API endpoints generated based on engine version 12.1327.1 (Qlik Sense May 2022)
- NEW FEATURE: It is now possible to detect session timeouts in QCS by observing the new property
CommunicationErrorEventArgs.QlikWebSocketClosedStatus
. - NEW FEATURE: Added location configuration method
QcsLocation.AsJwt
. - IMPROVEMENT: Events defined for classes
RpcConnection
andQlikConnection
are now exposed through the corresponding interfaces. - BUGFIX: The method
QixClassBase.RegisterQixTypeInternal<T>
was accidentally marked as protected. It is no longer exposed publicly. - BUGFIX: Exceptions thrown by a websocket during read is now correctly propagated to the event
RpcConnection.CommunicationErrorEvent
. - REMOVED: Removed deprecated asynchronous location configuration methods. Deprecated since v15.4.0.
- REMOVED: Removed deprecated client specific accessor extension methods for dimensions, measures, variables and bookmarks. Deprecated since v15.3.0.
- REMOVED: Removed deprecated class
Qlik.Sense.Client.GeoField
and associated interfaceIGeoField
. Deprecated since v15.3.0. - REMOVED: Removed deprecated
IApp
extension methods for master object management. Deprecated since v15.3.0. - REMOVED: Removed deprecated sheet specific overrides for
DidCreateChild
andDidDestroyChild
. Deprecated since v15.3.0. - REMOVED: Removed deprecated protected property
RpcConnection.Location
. Deprecated since v15.2.1. - REMOVED: Removed deprecated connection method
AsDirectConnection
with parameterproxySessionId
. Deprecated since v15.2.1. - REMOVED: Removed deprecated storytelling related functionality. Deprecated since v15.1.1.
- REMOVED: Removed deprecated promoted layout properties. Deprecated since v15.0.4.
- REMOVED: Removed deprecated client specific child access methods. Deprecated since v13.19.0.
- REMOVED: Removed deprecated promoted methods associated with property structure content of engine objects. Deprecated since v13.18.0.
- REMOVED: Removed deprecated custom child retrievers for
Filterpane
. Deprecated since v13.18.0. - REMOVED: Removed deprecated enumeration type
SheetCellSplitDirection
used for internal sheet cell split operation. Deprecated since v13.18.0. - REMOVED: Removed deprecated class
StructureExpressionExtensions
and associated sub classes. Deprecated since v13.18.0. - REMOVED: Removed deprecated class
ScriptExtensions
. Deprecated since v13.18.0. - REMOVED: Removed deprecated class
TypeSwitch
. Deprecated since v13.17.0. - REMOVED: Removed deprecated unused class
Qlik.Engine.GenericObjectList
. Deprecated since v13.17.0. - REMOVED: Removed deprecated mechanism for registering custom client object types. Deprecated since v13.17.0.
- REMOVED: Removed deprecated class
MethodInvocationErrorEventArgs
. Deprecated since September 2016. - DEPRECATED: Deprecated class
DynamicStructure
. UseAbstractStructure
instead. - ENVIRONMENTAL (.NET Framework only): .NET Framework 4.5.2 is no longer supported by Microsoft. Mininum supported version is now .NET Framework 4.6.2.
- ENVIRONMENTAL (.NET Core only): .NET Core 2.1 is no longer supported by Microsoft. Mininum supported version is now .NET Core 3.1.
- ENVIRONMENTAL (.NET Core only): Newtonsoft version 12.0.3 or later is now required. Earlier versions of Newtonsoft contain a bug that prevents serialization of instances of
Enumerable.Empty
.
v15.7.1
- BUGFIX: Fixed issue relating to null pointer exception being thrown during the disposal of session variables in certain cases.
- BUGFIX: Fixed a race condition where an exceptions could be thrown when a connection is disposed while a websocket response is being processed.
- BUGFIX: The interface
JsonRpc.WebSocket.IConnectionConfiguration
was accidentally marked as public. It is no longer exposed publically.
v15.7.0
- SCHEMA: API endpoints generated based on engine version 12.1219.2 (Qlik Sense February 2022)
- NEW FEATURE: It is now possible to configure the proxy to use for websocket connections through the property
IGenericLocation.WebSocketProxy
. - NEW FEATURE: Added parameterless constructor to class
Qlik.Engine.AsyncHandle
. - NEW FEATURE: Added method
IRpcConnection.Log(string,string)
to log messages to the debug console. - NEW FEATURE: Added property
ILocation.EnablePing
to control whether or not to perform a ping during connection setup. - NEW FEATURE: Added event
IRpcConnection.PushMethodReceivedEvent
that fires whenever push methods are received from Qlik Sense.
v15.6.2
- BUGFIX: Fixed issue when calling
AppField.Dispose()
after a session has timed out. Previously this would trigger a null pointer exception.
v15.6.1
- BUGFIX: Fixed deadlock issue that could occur if a user mixes synchronous and asyncronous API calls in the same solution. The fix provided in v15.6.0 only partially fixed the problem.
v15.6.0
- SCHEMA: API endpoints generated based on engine version 12.1140.1 (Qlik Sense November 2021)
- NEW FEATURE: Introduced method
ListObjectPager.GetAllCells
. - NEW FEATURE: The
AppExtensions
methodsGetAppField
andGetAppFieldAsync
now accepts an optional argument for identifying which alternate state to use when retrieving values. - NEW FEATURE: Added method 'IAppField.GetAllFieldValues' to simplify data retrieval from
AppField
instances. - NEW FEATURE: Added type casting overloads for the method
GetPropertiesAsync
andGetLayoutAsync
for classes that extend thePropertyContainer
class. - NEW FEATURE: Added class
Qlik.Sense.Client.SelectionObserver
and corresponding interface for conveniently inspecting selected field values. - NEW FEATURE: Added interface
ITransient
. Session objects and session variables are now automatically destroyed during dispose. - NEW FEATURE: Added session app create methods to the
LocationExtensions
class. - NEW FEATURE: Added conveniency method
Qlik.Engine.Location.LocalDesktop
for connecting to Qlik Sense Desktop instances. - NEW FEATURE: Added overload
CertificateManager.LoadCertificateFromDirectory(string path, string certificatePassword)
. - NEW FEATURE: Added location configuration method
Location.AsTicketViaProxy
. - IMPROVEMENT: SDK compatibility with older engine schemas has been improved for the methods
GenericObject.ExportData
andApp.GetTablesAndKeys
. - BUGFIX: The default value of argument
maxNbrCells
for methodGenericObject.GetHyperCubeStackData
is now set to10000
instead of0
. - BUGFIX: The default value of argument
exportState
for methodGenericObject.ExportData
is now set toEXPORT_ALL
instead ofEXPORT_POSSIBLE
. - BUGFIX: Fixed deadlock issue that could occur if a user mixes synchronous and asyncronous API calls in the same solution.
- BUGFIX: Fixed error in serialization of arrays containing
AbstractStructure
instances. - DEPRECATED:
RpcConnection.SendAsync<T>(Request)
andQlikConnection.SendAsync<T>(Request)
. Continuation method must be explicitly specified.
v15.5.1
- BUGFIX: Fixed issue with intellisense documentation not working correctly in Visual Studio.
- BUGFIX: Fixed issue with close event handling on objects returned as part of a return value structure such as
CreateGenericObjectResult
. - BUGFIX: Instances of the class
Qlik.Sense.Client.AppPropertiesObject
are now correctly deserialized. Previously such objects were deserialized to instances ofGenericObject
.
v15.5.0
- SCHEMA: API endpoints generated based on engine version 12.1036.3 (Qlik Sense August 2021)
v15.4.2
- BUGFIX: Objects are now correctly removed from memory when a
close
notification is received, thereby eliminating a potential memory leak. - BUGFIX: Improved async behavior of the class
AppField
. High concurrency use of this class could previously sometimes result in deadlocks.
v15.4.1
- BUGFIX: Fixed issue related to websocket URL construction that would make the websocket redirect mechanism fail when connection to QCS.
v15.4.0
- SCHEMA: API endpoints generated based on engine version 12.969.2 (Qlik Sense May 2021)
- NEW FEATURE: Introduced constructor
AbstractStructure(JObject)
and methodJObject AbstractStructure.GetJObject()
. - NEW FEATURE: Introduced methods
ILocation.AsDirectConnection
andILocation.AsDirectConnectionToPersonal
with engine port as argument. - DEPRECATED: Deprecated extension method used for location configuration. Use non-extension versions instead.
- DEPRECATED: Deprecated asynchronous location configuration methods. Methods have no asynchronous components. Use synchronous versions instead.
v15.3.4
- IMPROVEMENT: Improved error message produced when receiving unrecognized push method.
- IMPROVEMENT: The JSON property name is now explicitly shown as part of property documentation summary.
- BUGFIX: Direct connection now uses same format for user header as proxy, making it possible to attach to an existing proxy session. Note that such attachment still requires the header X-Qlik-Security header to be set correctly.
- BUGFIX: Fixed issue when doing non-anonymous authentication against virtual proxy that allow anonymous connections. Previously such authentications would always end up as anonymous.
- BUGFIX: Fixed issue with
SystemNetWebSocketSession.Close
that could lead to socket connections leaking. - BUGFIX: Fixed issue that in certain extreme cases could result in loss of a UTF-8 character when reading from websocket.
v15.3.0
- SCHEMA: API endpoints generated based on engine version 12.878.1 (Qlik Sense February 2021)
- NEW FEATURE: Introduced overload for LocationExtensions.App taking app ID as argument instead of an AppIdentifier instance.
- IMPROVEMENT: Utilize
qGenericType
andqGenericId
of classQlik.Engine.ObjectInterface
when deserializingQixBaseClass
instances thus eliminating the need for an extra engine call to retrieve this information. - BUGFIX: Eliminated session object leakage from class
Qlik.Sense.Client.AppField
. A call toDispose
will now correctly destroy also private session objects of this class. - BUGFIX: Eliminated session object leakage from methods
GetAppFields
,GetSheets
and their asynchronous equivalents. - DEPRECATED: Deprecated
IApp
extension methods for master object management. Use engine endpoints for these operations. - DEPRECATED: Deprecated class
Qlik.Sense.Client.GeoField
and associated interfaceIGeoField
. UseAppField
andIAppField
directly for this functionality. - DEPRECATED: Deprecated sheet specific overrides for
DidCreateChild
andDidDestroyChild
. Engine API must be used to emulate client behavior. - DEPRECATED: Deprecated client specific accessor extension methods for dimensions, measures, variables and bookmarks. Engine API must be used to emulate client behavior.
v15.2.2
- BUGFIX: The introduction of the classes
GenericSessionObject
andGenericSessionVariable
accidentally broke backward compatibility. The feature has been rolled back and classes removed.
v15.2.1
- SCHEMA: API endpoints generated based on engine version 12.811.3 (Qlik Sense November 2020)
- NEW FEATURE: Introduced class
Qlik.Engine.QcsLocation
for configuring connections to Qlik Cloud Services. - NEW FEATURE: AbstractStructure now overrides
ToString
. - NEW FEATURE: Introduced classes
GenericSessionObject
andGenericSessionVariable
. These classes automatically call the relevant destructor method when disposing. Use-clauses can be leveraged to manage the life span of session objects. (Feature rolled back in v15.2.2) - NEW FEATURE: Implemented method
QlikSession.RetryOnAbort
. The classPropertyContainer
leverages this when getting layouts and properties. - NEW FEATURE: Virtual proxy path can now be defined directly in the location URI.
- DEPRECATED: Deprecated parameter
proxyUsesSsl
in proxy connection configurations. Use propertyCustomUserHeaders
to define Origin header. - DEPRECATED: Deprecated parameter
extendedSecurityEnvironment
in direct connection configurations. Argument should be omitted. - DEPRECATED: Deprecated connection method
AsDirectConnection
with parameterproxySessionId
. Use propertyCustomUserHeaders
to define extra headers. - DEPRECATED: Deprecated protected property
RpcConnection.Location
. Location should not be accessed through connection object.
v15.1.1
- SCHEMA: API endpoints generated based on engine version 12.763.0 (Qlik Sense September 2020)
- BUGFIX:
Location.SessionCookie
now returnsnull
instead of throwing an error when the cookie is not set. - BUGFIX: The websocket session is now correctly terminated when a program exits. Previously a program would not exit unless the
IRpcConnection
instance used was explicitly disposed. - BUGFIX (.NET Framework only): Fixed issue relating to websocket throwing an error during authentication redirect when connecting to localhost.
- DEPRECATED: Deprecated storytelling related functionality. Use
GenericObject
andAbstractStructure
to interact with this client functionality. - DEPRECATED: Deprecated snapshot related functionality. Use
GenericBookmark
andAbstractStructure
to interact with this client functionality.
v15.0.6
- BUG FIX: The
LocationExtension
methodsHub
,App
,ActiveApp
and corresponding async methods now close the websocket connection if an error occurs. Previously the SDK could leak connections if the websocket was successfully established but an error occurred after that. A typical example would be that a call toOpenApp
timed out when callingLocationExtension.App
v15.0.5
- BUG FIX: Removed fixed 5 second timeout on websocket opening. The
RpcConnection.Timeout
property now affects this operation. This behavior is identical to the timeout behavior used for the .NET Framework version of the SDK for release v14.1.0 and earlier. - BUG FIX: Fixed issue with websocket connections sometimes being left open when the websocket connection succeeds, but the method called to open the connection times out.
v15.0.4
- SCHEMA: API endpoints generated based on engine version 12.674.1 (Qlik Sense June 2020)
- NEW FEATURE: Added support for JWT Authentication. A
Location
instance can be configured to use this type of authentication through the new methodAsJwtViaProxy
. - BUG FIX (.NET Core only): Fixed issue with sending websocket messages containing non-ASCII characters.
- BUG FIX (.NET Core only): Fixed issue with session cookie not being correctly set under certain location configurations.
- BUG FIX (.NET Core only): Fix potential deadlock issues for certain thread modes (in particular GUI). The infamous
ConfigureAwait
... - BUG FIX (.NET Core only): The property
Session.SessionToken
is now utilized for configuring headers during websocket connection. The property was previously simply ignored preventing the definition of distinct engine sessions. - BUG FIX: Fixed issue with the class
Qlik.Sense.Client.ExtendedCurrentSelection
that could cause the set of fields returned to be out of sync with the current selection. - DEPRECATED: Deprecated promoted layout properties in the Client namespace. Access values through the
Properties
andLayout
properties instead. - REMOVED: Removed the class
Qlik.Sense.Client.DataContainer
as well as client object specific methods in theSheet
class. Deprecated since v13.16.0. - REMOVED: Version check mechanism. Deprecated since v13.14.0.
- REMOVED: Schema validation mechanism. Deprecated since v13.14.0.
- REMOVED: Methods relating to WinForms binding extension methods. Deprecated since v13.14.0.
- REMOVED: Removed the following methods in namespace
Qlik.Sense.JsonRpc
:ILocation.AsServiceAsync
,Location.AsServiceAsync
,RpcConnection.WebSocketFactory
,WebsocketFactory.GetWebSocketFactory
. Deprecated since v13.12.0. - ENVIRONMENTAL: The .NET Framework version of the SDK no longer has a dependency on the Nuget package Autofac.
- ENVIRONMENTAL: The .NET Framework version of the SDK no longer require references to the following dlls: Qlik.Sense.Common.dll, BouncyCastle.CryptoExt.dll
- ENVIRONMENTAL: Dll properties including version information is now correctly set also for the dlls used for .NET Core.
v14.1.0
- SCHEMA: API endpoints generated based on engine version 12.602.2 (Qlik Sense April 2020)
v14.0.0
- NEW FEATURE: Added methods for returning selected field value pagers from the
ExtendedCurrentSelection
class. - ENVIRONMENTAL: Moved to MIT license.
v13.19.0
- SCHEMA: API endpoints generated based on engine version 12.531.4 (Qlik Sense February 2020)
- NEW FEATURE: .NET Core officially supported.
- DEPRECATED: Deprecated promoted layout properties. Access values through the
Properties
andLayout
properties instead. - DEPRECATED: Deprecated client specific child access methods. Use generic
AbstractStructure
methods instead.
v13.18.0
- SCHEMA: API endpoints generated based on engine version 12.475.3 (Qlik Sense November 2019)
- NEW FEATURE: Added method
DataPager.GetAllData
to lazily return all data associated with a data pager instance. - BUGFIX: Method
Qlik.Engine.GenericObjectProperties.GetExtensObjectAsync
now throws an exception if the object refers to a master object that does not exist. - DEPRECATED: Deprecated class
ScriptExtensions
. Functionality will not be replaced. - DEPRECATED: Deprecated class
StructureExpressionExtensions
and associated sub classes. Use genericAbstractStructure
methods instead. - DEPRECATED: Deprecated all storytelling related functionality. Use
GenericObject
andAbstractStructure
to interact with this client functionality. - DEPRECATED: Deprecated custom child retrievers for
Filterpane
. UseGenericObject.GetChild
. - DEPRECATED: Deprecated enumeration type
SheetCellSplitDirection
used for internal sheet cell split operation. Functionality will not be replaced. - DEPRECATED: Deprecated promoted methods associated with property structure content of engine objects. Use generic methods from object engine type instead.
v13.17.0
- SCHEMA: API endpoints generated based on engine version 12.421.3 (Qlik Sense September 2019)
- BUGFIX: Fixed issue with session identifier mismatch with Qlik Sense Client when connecting to a app in Desktop version of Qlik Sense where the app name contained parentheses.
- DEPRECATED: Deprecated unused class
Qlik.Engine.GenericObjectList
. - DEPRECATED: Deprecated class
Qlik.Engine.Extensions.TypeSwitch
. Use native C# 7 pattern matching. - DEPRECATED: Deprecated mechanism for registering custom client object types. Deprecation applies to the
Qlik.Engine.QixClassBase
methodsRegisterQixType
,RegisterQixSubType
andGetRegisteredType
. Use generic engine type and utilizeAbstractStructure
for object specific data access.
v13.16.0
- SCHEMA: API endpoints generated based on engine version 12.338.0 (Qlik Sense June 2019)
- BUGFIX (.NET Core only): Disable socket keepalive to prevent socket from automatically shutting down.
- DEPRECATED: Deprecated functionality for creating client objects. Deprecation includes the class
Qlik.Sense.Client.DataContainer
as well as client object specific methods in theSheet
class.
v13.15.0
- NEW FEATURE: Added method
DebugConsole.Flush
. - NEW FEATURE: Added functionality for globally specifying custom headers to include in JSON-RPC requests. Functionality provided through property
Request.CustomRpcHeaders
. - BUGFIX (.NET Core only): Fixed issue relating to cookie management when using
AsExistingSession
authentication configuration.
v13.14.0
- SCHEMA: API endpoints generated based on engine version 12.334.3 (Qlik Sense April 2019)
- DEPRECATED: Version check mechanism marked as obsolete. Version check can be performed by comparing
EngineApiVersion.Version
to Engine version received from API call. Default value for version check has been switched tofalse
. All methods accepting a versionCheck argument (for exampleILocation.Hub
) are also deprecated. Replace usage with corresponding method without versionCheck argument. - DEPRECATED: Schema validation mechanism marked as obsolete. Functionality will be removed. No replacement is planned.
- DEPRECATED: Methods relating to WinForms binding extension methods marked as obsolete. No replacements are planned.
v13.13.0
- NEW FEATURE (.NET Core only): Implemented support for websocket redirect.
- NEW FEATURE (.NET Core only): Implemented support for custom headers for websocket connection.
v13.12.0
- NEW FEATURE: Added experimental support for .NET Core 2.1.
- NEW FEATURE: The App extension methods for creating snapshots (
CreateSnapshot
andCreateSnapshotAsync
) now supports generating snapshots for linked visualizations. - BUGFIX: Fixed issue relating to the class
Qlik.Sense.Client.SelecctionExtensions
preserving current selection state between sessions. - DEPRECATED: Deprecated the following methods in namespace
Qlik.Sense.JsonRpc
:ILocation.AsServiceAsync
,Location.AsServiceAsync
,RpcConnection.WebSocketFactory
,WebsocketFactory.GetWebSocketFactory
.
v13.9.0
- SCHEMA: API endpoints generated based on engine version 12.287.1 (Qlik Sense February 2019)
Did this page help you?
If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!