@page "/test/export" @using Hcs.Broker @using Hcs.Broker.Logger @using Hcs.Broker.MessageCapturer @using Hcs.Service.Async.Nsi @using Hcs.WebApp.Config @using Hcs.WebApp.Services @using Hcs.WebApp.Utils @using Microsoft.AspNetCore.Authorization @attribute [Authorize] @layout AuthorizedLayout @implements IDisposable @inject NavigationManager NavigationManager @inject IConfiguration Configuration @inject IClientProvider ClientProvider Тестирование экспорта Сервис nsi OnNsiExportItem1Click()) Disabled=@inputDisabled Text="Экспорт НСИ 1" ButtonStyle="ButtonStyle.Primary" /> @code { EventConsole console = default!; bool inputDisabled = false; RadzenTextArea messageTextArea; RadzenTextArea responseTextArea; string messageBody; string responseBody; IClient client; ActionLogger logger = new ActionLogger(); FileMessageCapturer messageCapturer; bool catchMessageBody; [CascadingParameter] public AuthorizedLayout Layout { get; set; } protected override void OnInitialized() { base.OnInitialized(); Layout.Roles = AppRole.ADMINISTRATOR_TYPE; } public void Dispose() { if (messageCapturer != null) { messageCapturer.OnFileWritten -= OnFileWritten; } } void OnLog(string log) { console.Log(log); } void OnFileWritten(string fileName) { if (catchMessageBody) { catchMessageBody = false; messageBody = XmlBeautifier.Beautify(File.ReadAllText(fileName)); messageTextArea.Rows = messageBody.Count(c => c.Equals('\n')) + 2; } } async Task OnNsiExportItem1Click() { try { TryInitializeClient(); StartExport(); await client.Nsi.ExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber.Item1); EndExport(); } catch { NavigationManager.NavigateTo("/error"); } } void TryInitializeClient() { if (client == null) { logger.OnWriteLine += OnLog; messageCapturer = new FileMessageCapturer("test/export", logger); messageCapturer.OnFileWritten += OnFileWritten; var config = Configuration.GetSection("BrokerConfig").Get(); client = ClientProvider.CreateClient(config, logger, messageCapturer); } } void StartExport() { inputDisabled = true; messageBody = string.Empty; responseBody = string.Empty; catchMessageBody = true; console.Clear(); } void EndExport() { inputDisabled = false; responseBody = XmlBeautifier.Beautify(File.ReadAllText(messageCapturer.LastFileName)); responseTextArea.Rows = responseBody.Count(c => c.Equals('\n')) + 2; } }