我正在为需要使用 System.LicenseProvider 的第三方应用程序开发插件。
许可证文件本身是由 FlexLM 生成的。
所以我有:
[LicenseProvider(typeof(LicFileLicenseProvider))]
public class MyLicensedModule
{
protected System.ComponentModel.License thisLicense;
protected ModuleFlexFeature thisfeature;
public bool LicenseCheck()
{
bool isLicensed = LicenseManager.IsLicensed(typeof(ModuleFlexFeature)); //returns TRUE
if(thisFeature==null) thisFeature = new ModuleFlexFeature();
thisLicense = LicenseManager.Validate(typeof(ModuleFlexFeature),thisFeature);
//no thrown exception
return (thisLicense != null); //thisLicense is always null
}
public void Dispose()
{
if (thisLicense!=null)
{
thisLicense.Dispose();
thisLicense = null;
}
}
}
(+其他不相关的方法),使用:
internal class ModuleFlexFeature
{
public ModuleFlexFeature() { }
public string FeatureName { get { return "myFlexLMFeature"; } }
public float FeatureVersion { get { return 2016.0f; } }
}
使用 Flexera 的 LMTOOLS,我可以获得许可证服务器状态(我在 7507@mypcname 上运行,使用了 myFlexLMFeature 的 1 个许可证中的 0 个)。
然后我可以在额外的服务器中添加 7507@mypcname 以供第三方应用程序使用,但是:
- isLicensed 返回 true(预期)
- LicenseManager.Validate() 不抛出异常(预期)
- thisLicense 为空(不是预期的)
我试过用
LicenseManager.IsValid(typeof(ModuleFlexFeature),new ModuleFlexFeature(), out thisLicense);
但两者都有相似的结果(代码似乎有效,但 thisLicense 为空)
我做错什么了吗?LicenseManager 与 FlexLM 兼容吗?或者运行我的插件的第三方应用程序是否存在错误(不知何故无法正确连接到许可证服务器)?如何检查?
谢谢