Using Redis Storage for the Reporting REST Service

Using Redis Storage for the Reporting REST Service

ติดตั้ง Library

  1. ติดตั้งแพ็กเกจ Telerik.Reporting.Cache.StackExchangeRedis เมื่อติดตั้งแพ็กแกจนี้แล้ว จะได้ StackExchange.Redis มาด้วย
<Project Sdk="Microsoft.NET.Sdk.Web">
    <ItemGroup>
        ...
        <PackageReference Include="Telerik.Reporting.Cache.StackExchangeRedis.Trial" Version="18.1.24.709" /> <em><!-- เพิ่มบรรทัดนี้ --></em>
        <PackageReference Include="Telerik.Reporting.OpenXmlRendering3.Trial" Version="18.1.24.709" />
        <PackageReference Include="Telerik.Reporting.Services.AspNetCore.Trial" Version="18.1.24.709" />
        <PackageReference Include="Telerik.Reporting.WebServiceDataSource.Trial" Version="18.1.24.709" />
    </ItemGroup>
</Project>
  1. รันคำสั่งต่อไปนี้เพื่อ Clean และ Restore โปรเจค
dotnet clean
dotnet restore

ปรับแก้ไฟล์ Startup.cs

  1. Import Telerik.Reporting.Cache.StackExchangeRedis และ StackExchange.Redis ที่ส่วนบนของไฟล์
....
using Telerik.Reporting.Cache.File; // ลบบรรทัดนี้ถ้าไม่ได้ใช้งาน
using Telerik.Reporting.Services;
using Telerik.Reporting.Cache.StackExchangeRedis; // เพิ่มบรรทัดนี้
using StackExchange.Redis; // เพิ่มบรรทัดนี้
  1. โค้ดส่วน Register IReportServiceConfiguration ให้ปรับแก้ดังนี้
services.TryAddSingleton<IReportServiceConfiguration>(sp =>
         new ReportServiceConfiguration
         {
             ReportingEngineConfiguration = sp.GetService<IConfiguration>(),
             HostAppId = "AtlasXWebService",
             //Storage = new FileStorage(tempDataReport), // ลบบรรทัดนี้
             Storage = new RedisStorage(ConnectionMultiplexer.Connect("localhost:6379"), "axws_report_"), // เพิ่มบรรทัดนี้
             ReportSourceResolver = new UriReportSourceResolver(
                 Path.Join(
                     sp.GetService<IWebHostEnvironment>().ContentRootPath,
                     "Report",
                     "Templates"
                 )
             )
         });

สามารถใช้ ConfigurationOptions เพื่อจัดการคอนฟิกอื่นๆเพิ่มเติมได้

                Storage = new RedisStorage(ConnectionMultiplexer.Connect(new ConfigurationOptions
                {
                    EndPoints = { "localhost:6379" },
                    Ssl = true,                             <em>// Enable SSL/TLS</em>
                    AbortOnConnectFail = false,             <em>// Optional, recommended for resilience</em>
                    AllowAdmin = false                      <em>// Optional, set true only if you need admin commands</em>
                }), "axws_report_"),