License details
See the Licensing page for license specifics.
License validity
The license is valid if the ExpirationDate
or the UpgradeProtectionExpiration
attribute in the license data is greater than or equal to the release date of the {major}.
version of the NServiceBus assembly used by the endpoint. To view the release dates for the various versions, see NServiceBus Packages Versions.
Throughput limitations
No technical limitations are enforced at runtime when either no license is found or a license has expired.
License management
There are several options available for installing the license file.
Depending on the operating system, the paths may be case sensitive.
NServiceBus uses the Environment.GetFolderPath(SpecialFolder)
method to determine the locations of some paths on each OS.
Code-first configuration
A license can be configured via code-first configuration API:
endpointConfiguration.LicensePath("PathToLicense");
// or
endpointConfiguration.License("ContentsOfLicenseFile");
Application-specific license location
A license located at {AppDomain.
will be automatically detected.
User-specific license location
To install a license for all endpoints and Particular Service Platform applications run by a specific user, install the license file to {SpecialFolder.
.
This location can be expressed using environment variables on Windows, or a bash expression on Linux/macOS:
- Windows:
%LOCALAPPDATA%\
ParticularSoftware\ license. xml - Linux/macOS:
${XDG_DATA_HOME:-$HOME/
. local/ share}/ ParticularSoftware/ license. xml
Machine-wide license location
To install a license for all endpoints and Particular Service Platform applications on an entire machine, install the license file to {SpecialFolder.
.
This location can be expressed using environment variables on Windows, or as a literal path on Linux/macOS.
- Windows:
%PROGRAMDATA%\
ParticularSoftware\ license. xml - Linux/macOS:
/
usr/ share/ ParticularSoftware/ license. xml
Application configuration file
It is possible to specify the license in app.
:
- Use the key
NServiceBus/
to specify the path where NServiceBus looks for the license:LicensePath
<appSettings>
<add key="NServiceBus/LicensePath"
value="C:\NServiceBus\License\License.xml" />
</appSettings>
- Use the key
NServiceBus/
to store the XML-encoded contents of the license directly inLicense app.
:config
<appSettings>
<add key="NServiceBus/License" value="<?xml version="1.0" encoding="utf-8"?><
license id="1222e1d1-2222-4a46-b1c6-943c442ca710" expiration="2013-11-30T00:00:00.0000000
" type="Standard" LicenseType="Standard" LicenseVersion="4.0
" MaxMessageThroughputPerSecond="Max" WorkerThreads="Max
" AllowedNumberOfWorkerNodes="Max">
. . .
</license>" />
</appSettings>
Windows Registry
Licenses stored in a registry key named License
in the following registry locations are automatically detected:
HKEY_LOCAL_MACHINE\
Software\ ParticularSoftware HKEY_CURRENT_USER\
Software\ ParticularSoftware
To install a license as a registry key, use the following steps:
- Start the Registry Editor.
- Go to
HKEY_LOCAL_MACHINE\
orSoftware\ ParticularSoftware HKEY_CURRENT_USER\
.Software\ ParticularSoftware - Create a new Multi-String Value (
REG_MULTI_SZ
) namedLicense
. - Paste the contents of the license file.
HKEY_LOCAL_MACHINE
is the chosen license location, and the operating system is 64-bit, then repeat the import process for the HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ParticularSoftware
key to support 32-bit clients.HKEY_CURRENT_USER
, NServiceBus processes must run as the user account used to add the license file to the registry in order to access the license.It is safe to ignore any warnings regarding empty strings.
Sometimes the license must be embedded in a single line of text, for example, in a command line when deploying an endpoint with Docker. For these scenarios, the license can be minified, removing all spaces and line-breaks, by adding minify=true
to the query string of the URL used to download a license file from the Particular Software website.
Troubleshooting
Diagnose license scanning issues by enabling Debug logging as all traversed locations and the scan result are logged.
2020-04-17 12:11:31.979 DEBUG Looking for license in the following locations:
License not found in S:\docs.particular.net\samples\pubsub\Core_7\Publisher\bin\Debug\net5.0\license.xml
License found in C:\Users\XXX\AppData\Local\ParticularSoftware\license.xml
License not found in C:\ProgramData\ParticularSoftware\license.xml
Selected active license from C:\Users\XXX\AppData\Local\ParticularSoftware\license.xml
License Expiration: 2021-01-01
LicenseManager
or the text Looking for license in the following locations:
.Failed to initialize the license
The license management code requires write permissions to store metadata. If the process credentials don't have write permissions the following fatal event log item can be generated:
FATAL NServiceBus.Features.LicenseReminder Failed to initialize the license
System.UnauthorizedAccessException: Access to the path 'C:\Windows\system32\config\systemprofile' is denied.
Ensure that the process has write permissions at the specified location. If necessary, either modify the location by using another suitable license management technique, change permissions, or use another process that has appropriate permissions.