0

我正在使用Windows 8.1最新的 .NET 核心和Visual Studio 2015. 我按照 James Gregory 的以下文章创建了一个 Winform 应用程序。但是当我声明许可证时,它给了我以下错误:Rhino.Licensing.LicenseExpiredException was unhandled HResult=-2146233088 Message=Expiration Date : 6/16/2016 12:00:00 AM Source=Rhino.Licensing StackTrace: at Rhino.Licensing.AbstractLicenseValidator.HasExistingLicense() at Rhino.Licensing.AbstractLicenseValidator.AssertValidLicense() at Rhino.Licensing.LicenseValidator.AssertValidLicense() at Winfrm_RhinoTest.Form1.ApplyLicense()....

该代码于 2016 年 6 月 15 日运行,到期日期设置为 2016 年 6 月 16 日。

生成许可证的 C# 代码如下:

string publicKey = File.ReadAllText("publicKey.xml");
            new LicenseValidator(publicKey, @"C:\Users\Public\license.xml").AssertValidLicense();

license.xml 文件生成并在代码中使用如下:

<?xml version="1.0" encoding="utf-8"?>
<license id="b45c43a5-a639-4fa4-8bf7-38531b19072e" expiration="2016-06-16T00:00:00.0000000" type="Trial">
  <name>Bilbo</name>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <Reference URI="">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
        <DigestValue>d+eI2/Bdp/VYJ8pi/ufmJGeRW6k=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>Zd2oTinP0zE4/4haA5e4810MdG3upx1LlzkXALsTJYDgXLacDoc96diObTkxDipUBMUeFuf3ARBPtFRHGIqHjEfhn/FqZD+CrcsvjhbMSIROpaqqcOpzFwOamjQ+jPLW+BOf5qvMA0n4LNCm8B5qnifc/08zTXTSUpAqLiCY8zk=</SignatureValue>
  </Signature>
</license>
4

1 回答 1

3

rhino-licensing 的源代码中,日期比较以 UTC 进行

result = DateTime.UtcNow < ExpirationDate;

它将以 Expiration Date 作为参数抛出异常

throw new LicenseExpiredException("Expiration Date : " + ExpirationDate)

由于您显示的异常表明 ExpirationDate 是 6 月 16 日的开始,最可能的原因是您在您的时区 6 月 15 日运行代码,这实际上已经是 UTC 的 6 月 16 日,当时已经 19 小时这篇文章的。

于 2016-06-16T05:10:14.743 回答