QlmLicense.GetProductProperties returning empty string
Hey there!
I'm currently having issues reading my product properties as I'm only getting an empty string back when calling QlmLicense.GetProductProperties as show in the example in the documentation:
https://support.soraco.co/hc/en-us/articles/115000809763-QlmLicense-GetProductProperties
I can see the product property for the specific license correctly when going into the QLM application as shown here:

And the license has been activated fine through the API. And can read that the license has been activated and is valid and so on...
I've also tried to running the code in both DEBUG and RELEASE mode to rule out any QLM Dev license issues, with no difference in behaviour.
Do you have any ideas what could be the cause of the API returning and emtpy string?
Are there anything I can check and verify to rule out any problems?
Any help would be highly appriciated.
-
Official comment
Hi Christian
A typical error is to use a QlmLicense object that's not completely initialized.
You should always use the QlmLicense object of the LicenseValidator class.
For example:
LicenseValidator lv = new LicenseValidator();
lv.QlmLicenseObject.GetProductProperties (....)
If this does not help, I would need to take a look at your code. If you post code here, remember that this is a public forum so do not post anything confidential. You can also contact us at support@soraco.co.
Comment actions -
LicenseValidator is from the downloadable code examples and not part of the actual API right?
I also believe the LicenseValidator class varies from example to example. Do know which example is meant to work with the GetProductProperties method?
Anyway at this point we have rewritten the examples into an implementation that fits our needs. And therefor at this point have our own initialization of the license object.
Can you please take a look at the following code example of our implementation and see if any thing sticks out:
private QlmLicense CreateLicense(string computerID)
{
var license = new QlmLicense();
license.DefineProduct(_productInfo.ProductID, _productInfo.ProductName, _productInfo.MajorVersion, _productInfo.MinorVersion, string.Empty, _productInfo.PersistanceKey);
license.LicenseEngineLibrary = ELicenseEngineLibrary.DotNet;
license.PublicKey = _productInfo.PublicKey;
license.RsaPublicKey = _productInfo.RSAPublicKey;
license.DefaultWebServiceUrl = "url to qlmservice.asmx";
license.StoreKeysLocation = EStoreKeysTo.ERegistry;
license.ValidateOnServer = false;
license.PublishAnalytics = true;
license.MaxDaysOffline = -1;
license.MaxDaysOfflineTimerEnabled = false;
license.ComputerID = computerID;
license.CommunicationEncryptionKey = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}";
license.AdminEncryptionKey = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}";
return license;
}Also, here is an example where I'm using the method above and trying to call GetProductProperties:
var license = CreateLicense(computerID);
var validateResult = license.ValidateLicenseEx(licenseKey, computerID);
var licenseStatus = (int)license.GetStatus();
string response;
string props = license.GetProductProperties(license.DefaultWebServiceUrl, licenseKey, out response);Finally I forgot to mention that even though the string props is empty. I still get the following response:
<?xml version="1.0" encoding="utf-8"?> <QuickLicenseManager><result>Successfully retrieved custom properties for Activation Key: XXXXXXXXXXXXXXXXXXXXXXXXXX</result> </QuickLicenseManager>
Hope this might shed some light on the problem. I've tried to compare license settings with various code examples of the LicenseValidator class, but are unable to spot any issues. Hoping the information above might help you guys identify the problem.
Let me know if you know of a solution or need other information from my end. Again any help is greatly apriciated.
-
The LicenseValidator class should be generated from the Protect Your Application wizard (3rd tab in the QLM Management Console).
The code that you sent looks fine.
One possibility is that your product definition was not published to the License Server. To publish:
- Go to the Manage Keys tab
- Click Sites then select your site
- Click Upload products to the license server
If this does not help, the next step would be to setup a screen sharing session to diagnose this with you.
Please contact us at support@soraco.co to schedule a screen sharing session.
-
I have figured it out!
It turns out when calling GetProductProperties you need to use the original activation key.
I was getting an empty result back, as I was calling the method with the pc key, generated when the license was activated.
I was simply using the same pc key as when calling ValidateLicenseEx (you can even spot this in the code example I posted above if you look closely).
So I know what to change now, to fix it. However, I was wondering if it is by design that the method success but returns an empty string when called with the pc-key insteand of the activation-key? I believe it might be a better design to either make it give an error about the key being of a wrong type, or just actually being able to use both activation- and pc-key.
TLDR: Dont use the pc-key instead of the activation-key.
Please sign in to leave a comment.
Comments
5 comments