Fehler 1053: Worker Service .NET CORE: Der Service hat nicht rechtzeitig auf die Start- oder Steueranforderung reagiert C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Fehler 1053: Worker Service .NET CORE: Der Service hat nicht rechtzeitig auf die Start- oder Steueranforderung reagiert

Post by Anonymous »

Fehler 1053: Worker Service .NET CORE. Der Dienst hat nicht rechtzeitig auf die Start- oder Steueranforderung reagiert.using DataToFastApiDroggeriExporter;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using System;
using System.Net.Http;
using System.Net.Http.Headers;

internal class Program
{
private static void Main(string[] args)
{
HostApplicationBuilder hostApplicationBuilder = Host.CreateApplicationBuilder(args);

#if DEBUG
//var selectedDatabaseConnectionString = hostApplicationBuilder.Configuration.GetConnectionString("TraideNetBal");
var selectedDatabaseConnectionString = hostApplicationBuilder.Configuration.GetConnectionString("TraideNet");
#else
var selectedDatabaseConnectionString = hostApplicationBuilder.Configuration.GetConnectionString("TraideNet");
#endif

var httpClient = new HttpClient();
httpClient.BaseAddress = new System.Uri("https://powermbi.ru/");
httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0");

httpClient.Timeout = TimeSpan.FromHours(1);
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", hostApplicationBuilder.Configuration.GetValue("Bearer"));

hostApplicationBuilder.Services.AddSingleton(httpClient);

hostApplicationBuilder.Logging.ClearProviders(); // Remove default providers
hostApplicationBuilder.Logging.AddConsole(); // Enable console logging

var logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File("logs.txt")
.CreateLogger();

hostApplicationBuilder.Logging.AddSerilog(logger);
hostApplicationBuilder.Logging.AddDebug(); // (Optional) Add Debug output

hostApplicationBuilder.Services.RegisterRepositories(selectedDatabaseConnectionString);

var chunkSize = hostApplicationBuilder.Configuration.GetValue("ChunkSize");

hostApplicationBuilder.Services.RegisterWebSenders();

hostApplicationBuilder.Services.AddHostedService();

IHost host = hostApplicationBuilder.Build();
host.Run();
}
}

using DataToFastApiDroggeriExporter.DTOs;
using DataToFastApiDroggeriExporter.Repositories.Base;
using DataToFastApiDroggeriExporter.Repositories.Derived;
using Microsoft.Extensions.DependencyInjection;

namespace DataToFastApiDroggeriExporter;

public static class RepositoriesRegistationExtensions
{
public static IServiceCollection RegisterRepositories(this IServiceCollection serviceCollection, string selectedDatabaseConnectionString)
{
serviceCollection.AddSingleton(instance => new BarcodesRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new ProductsCategoriesRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new ProductsRepository(selectedDatabaseConnectionString));

serviceCollection.AddSingleton(instance => new StoresRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new ReceiptsRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new TrademarksRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new StocksBalancesRepository(selectedDatabaseConnectionString));

serviceCollection.AddSingleton(instance => new OrdersRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new IncomesRepository(selectedDatabaseConnectionString));

serviceCollection.AddSingleton(instance => new ManufacturersRepository(selectedDatabaseConnectionString));

return serviceCollection;
}
}

public static class RepositoriesRegistationExtensions
{
public static IServiceCollection RegisterRepositories(this IServiceCollection serviceCollection, string selectedDatabaseConnectionString)
{
serviceCollection.AddSingleton(instance => new BarcodesRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new ProductsCategoriesRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new ProductsRepository(selectedDatabaseConnectionString));

serviceCollection.AddSingleton(instance => new StoresRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new ReceiptsRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new TrademarksRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new StocksBalancesRepository(selectedDatabaseConnectionString));

serviceCollection.AddSingleton(instance => new OrdersRepository(selectedDatabaseConnectionString));
serviceCollection.AddSingleton(instance => new IncomesRepository(selectedDatabaseConnectionString));

serviceCollection.AddSingleton(instance => new ManufacturersRepository(selectedDatabaseConnectionString));

return serviceCollection;
}
}

using DataToFastApiDroggeriExporter.DTOs;
using DataToFastApiDroggeriExporter.HTTP.Base;
using DataToFastApiDroggeriExporter.Repositories.Base;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;

namespace DataToFastApiDroggeriExporter;

public class Worker : BackgroundService
{
private readonly int _delayingTime;
private readonly IConfiguration _configuration;
private readonly ILogger _logger;
private readonly HttpClient _httpClient;
private readonly DateTime _dateFromForReceiptsLoading;

private readonly IRepository _productsBarcodesRepository;
private readonly IRepository _productsRepository;
private readonly IRepository _storesRepository;
private readonly IRepository _productsCategoriesRepository;
private readonly IRepository _trademarksRepository;
private readonly IRepository _manufacturersRepository;
private readonly IRepository _stocksBalancesRepository;

private readonly IDatesRangedRepository _ordersRepository;
private readonly IDatesRangedRepository _incomesRepository;
private readonly IDatesRangedRepository _receiptsRepository;

private readonly ISender _productsCategoriesSender;
private readonly ISender _barcodesSender;
private readonly ISender _productsSender;
private readonly ISender _storesSender;
private readonly ISender _receiptsSender;
private readonly ISender _trademarksSender;
private readonly ISender _manufacturersSender;
private readonly ISender _stocksBalancesSender;
private readonly ISender _ordersSender;
private readonly ISender _incomesSender;

private readonly TimeOnly _timeForSendingReport;

public Worker(IConfiguration configuration, ILogger logger,
HttpClient httpClient,
ISender barcodesSender, ISender productsSender, ISender storesSender, ISender receiptsSender, ISender productsCategoriesSender, ISender trademarksSender, ISender manufacturersSender, ISender stocksBalancesSender, ISender ordersSender, ISender incomesSender,
IRepository productsBarcodesRepository, IRepository productsRepository, IRepository storesRepository, IDatesRangedRepository receiptsRepository, IRepository productsCategoriesRepository, IRepository stocksBalancesRepository, IRepository trademarksRepository, IRepository manufacturersRepository, IDatesRangedRepository ordersRepository,
IDatesRangedRepository incomesRepository)
{
_configuration = configuration;
_logger = logger;
_httpClient = httpClient;

_productsBarcodesRepository = productsBarcodesRepository;
_storesRepository = storesRepository;
_productsRepository = productsRepository;
_receiptsRepository = receiptsRepository;
_productsCategoriesRepository = productsCategoriesRepository;
_trademarksRepository = trademarksRepository;
_manufacturersRepository = manufacturersRepository;
_stocksBalancesRepository = stocksBalancesRepository;
_ordersRepository = ordersRepository;
_incomesRepository = incomesRepository;

_barcodesSender = barcodesSender;
_productsSender = productsSender;
_storesSender = storesSender;
_receiptsSender = receiptsSender;
_productsCategoriesSender = productsCategoriesSender;
_trademarksSender = trademarksSender;
_manufacturersSender = manufacturersSender;
_stocksBalancesSender = stocksBalancesSender;
_ordersSender = ordersSender;
_incomesSender = incomesSender;

_delayingTime = _configuration.GetValue("delayingTime");
_dateFromForReceiptsLoading = _configuration.GetValue("DateFromForReceiptsLoading");
_timeForSendingReport = _configuration.GetValue("TimeForSendingReport");
}

public override Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Service started");
return base.StartAsync(cancellationToken);
}

public override Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Service stopped");
return base.StopAsync(cancellationToken);
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var utcNow = DateTime.UtcNow;
var yesterdayInUtc = utcNow.AddDays(-1);
var tomorrowInUtc = utcNow.AddDays(1);

_logger.LogInformation($"UTC Now: {utcNow}");

var nowTime = TimeOnly.FromDateTime(DateTime.Now);

if (_timeForSendingReport > nowTime)
{
// If the report time is later today, calculate the delay until that time
var delayTime = _timeForSendingReport - nowTime;
await Task.Delay(delayTime);
}
else if (_timeForSendingReport < nowTime)
{
// If the report time has already passed today, schedule it for the same time tomorrow
var delayTime = TimeSpan.FromDays(1) - (nowTime - _timeForSendingReport);
await Task.Delay(delayTime);
}

var manufacturers = await _manufacturersRepository.GetAllAsync();
var productsCategories = await _productsCategoriesRepository.GetAllAsync();
var stores = await _storesRepository.GetAllAsync();
var trademarks = await _trademarksRepository.GetAllAsync();

await _manufacturersSender.SendAsync(manufacturers);
await _productsCategoriesSender.SendAsync(productsCategories);
await _storesSender.SendAsync(stores);
await _trademarksSender.SendAsync(trademarks);

var products = await _productsRepository.GetAllAsync();

var productsToSend = (from p in products
join m in manufacturers
on Convert.ToInt64(p.TrademarkExternalId)
equals (-Convert.ToInt64(m.ExternalId))
select p)
.Union(from p in products
join t in trademarks
on p.TrademarkExternalId
equals t.ExternalId
select p).ToArray();

await _productsSender.SendAsync(productsToSend);

var barcodes = await _productsBarcodesRepository.GetAllAsync();
var barcodesToSend = (from b in barcodes
join p in productsToSend
on b.ProductExternalId equals p.ExternalId
select b).ToArray();

await _barcodesSender.SendAsync(barcodesToSend);

var incomes = await _incomesRepository.GetAllAsync(yesterdayInUtc);

foreach (var income in incomes)
{
income.InvoiceItems = income.InvoiceItems.Where(ii => productsToSend.FirstOrDefault(i => i.ExternalId == ii.ProductExternalId) != null).ToList();
}

await _incomesSender.SendAsync(incomes);

var orders = await _ordersRepository.GetAllAsync(yesterdayInUtc);

await _ordersSender.SendAsync(orders);

var receipts = (await _receiptsRepository.GetAllAsync(yesterdayInUtc)).ToArray();

foreach (var receipt in receipts)
{
receipt.ReceiptItems = receipt.ReceiptItems.Where(ri => productsToSend.FirstOrDefault(i => i.ExternalId == ri.ProductExternalId) != null).ToArray();
}

await _receiptsSender.SendAsync(receipts);

if (DateTime.UtcNow.Day == 1)
{
var stocksBalances = await _stocksBalancesRepository.GetAllAsync();

var stocksBalancesToSend = (from sb in stocksBalances
join p in productsToSend
on sb.ProductExternalId
equals p.ExternalId
select sb).ToArray();

await _stocksBalancesSender.SendAsync(stocksBalances);
}

_logger.LogInformation("END");

var timeToDelay = tomorrowInUtc - DateTime.UtcNow;

await Task.Delay(timeToDelay);
}
}
}
< /code>
Es funktioniert in Debug und Veröffentlichung einwandfrei, aber nicht als Service veröffentlicht. Der Service reagierte nicht rechtzeitig auf die Start- oder Kontrollanforderung.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post