Компоненты TALL в .NET Core

#.net #pdf #.net-core

#.net #PDF #.net-core

Вопрос:

У нас есть ряд ASP.NET Рамочные приложения, использующие компоненты TALL (TallPDF и PDFKit). Теперь мы переносим часть этой логики в .NET Core.

Все примеры, которые я видел, показывают только, как использовать web.config , но, учитывая, что это в основном было заменено совершенно новым механизмом настройки в .NET Core (обычно в файле appsettings.json ), не совсем ясно, что нужно будет сделать, чтобы реализовать это в .NET Core.

У кого-нибудь есть пример использования лицензий tall Components в ASP.NET Ядро?

Ответ №1:

Поскольку я не смог найти этот ответ где-либо еще в Интернете, я задокументирую его здесь.

Начните с добавления нового раздела в appsettings.json файл:

 {
  "TallComponentsLicenses": [
    {
      "key": "TallPDF.NET 5.0 Web Application Key",
      "value": "<YOUR LICENSE>"
    }
  ]
}
 

Создайте простую модель для описания этой структуры:

 public class TallComponentsLicense
{
  public string Key { get; set; }
  public string Value { get; set; }
}
 

В Startup.cs , зарегистрируйте каждую из лицензий в глобальном TallComponents.Licensing.LicenseCollection :

 using TallComponents.Licensing;

...

public class Startup
{

  public Startup(IConfiguration configuration)
  {
    Configuration = configuration;
  }

  public IConfiguration Configuration { get; }
  
  ...
  
  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
    
    ...
    
    var tallComponentsLicenses = Configuration.GetSection("TallComponentsLicenses");
    if (tallComponentsLicenses != null)
    {
      var licenses = tallComponentsLicenses.Get<TallComponentsLicense[]>();
      foreach (var license in licenses)
      {
        LicenseCollection.Add(license.Key, license.Value);
      }
    }
    
    ...
    
  }
  
}
 

Кроме того, при использовании ключа веб-приложения это зависит от наличия определенных атрибутов уровня сборки. Вы можете предоставить их вручную (например, в AssemblyInfo.cs файле) или указав их в csproj файле, что я предпочитаю:

 <PropertyGroup>
  <Company>YOUR COMPANY NAME</Company>
  <Product>YOUR PRODUCT NAME</Product>
  <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
</PropertyGroup>