From 443843b1468d9ace23a08a2c2374a0c8091b9bc8 Mon Sep 17 00:00:00 2001 From: Roger Far Date: Tue, 7 Apr 2020 10:22:18 -0600 Subject: [PATCH] Add the QBittorrent proxy --- server/RdtClient.Data/Data/TorrentData.cs | 29 +- ...06172142_Torrents_Add_Category.Designer.cs | 392 ++++++++ .../20200406172142_Torrents_Add_Category.cs | 22 + .../Migrations/DataContextModelSnapshot.cs | 3 + server/RdtClient.Data/Models/Data/Torrent.cs | 2 + server/RdtClient.Service/DiConfig.cs | 1 + .../Models/QBittorrent/AppBuildInfo.cs | 26 + .../Models/QBittorrent/AppPreferences.cs | 435 +++++++++ .../Models/QBittorrent/TorrentCategory.cs | 14 + .../Models/QBittorrent/TorrentInfo.cs | 140 +++ .../Models/QBittorrent/TorrentProperties.cs | 107 ++ .../RdtClient.Service/Services/QBittorrent.cs | 402 ++++++++ server/RdtClient.Service/Services/Torrents.cs | 40 +- .../Controllers/QBittorrentController.cs | 419 ++++++++ .../Controllers/TorrentsController.cs | 2 +- server/RdtClient.Web/Program.cs | 4 +- server/RdtClient.Web/RdtClient.Web.csproj | 6 +- server/RdtClient.Web/Startup.cs | 29 +- server/RdtClient.Web/app.log | 911 ------------------ server/RdtClient.Web/wwwroot/index.html | 1 + 20 files changed, 2054 insertions(+), 931 deletions(-) create mode 100644 server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.Designer.cs create mode 100644 server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.cs create mode 100644 server/RdtClient.Service/Models/QBittorrent/AppBuildInfo.cs create mode 100644 server/RdtClient.Service/Models/QBittorrent/AppPreferences.cs create mode 100644 server/RdtClient.Service/Models/QBittorrent/TorrentCategory.cs create mode 100644 server/RdtClient.Service/Models/QBittorrent/TorrentInfo.cs create mode 100644 server/RdtClient.Service/Models/QBittorrent/TorrentProperties.cs create mode 100644 server/RdtClient.Service/Services/QBittorrent.cs create mode 100644 server/RdtClient.Web/Controllers/QBittorrentController.cs delete mode 100644 server/RdtClient.Web/app.log create mode 100644 server/RdtClient.Web/wwwroot/index.html diff --git a/server/RdtClient.Data/Data/TorrentData.cs b/server/RdtClient.Data/Data/TorrentData.cs index 15732e9..a83c803 100644 --- a/server/RdtClient.Data/Data/TorrentData.cs +++ b/server/RdtClient.Data/Data/TorrentData.cs @@ -10,10 +10,12 @@ namespace RdtClient.Data.Data public interface ITorrentData { Task> Get(); - Task Get(Guid id); + Task GetById(Guid id); + Task GetByHash(String hash); Task Add(String realDebridId, String hash); Task UpdateRdData(Torrent torrent); Task UpdateStatus(Guid torrentId, TorrentStatus status); + Task UpdateCategory(Guid torrentId, String category); Task Delete(Guid id); } @@ -31,7 +33,7 @@ namespace RdtClient.Data.Data return await _dataContext.Torrents.ToListAsync(); } - public async Task Get(Guid id) + public async Task GetById(Guid id) { var results = await _dataContext.Torrents .Include(m => m.Downloads) @@ -45,6 +47,20 @@ namespace RdtClient.Data.Data return results; } + public async Task GetByHash(String hash) + { + var results = await _dataContext.Torrents + .Include(m => m.Downloads) + .FirstOrDefaultAsync(m => m.Hash == hash); + + foreach (var file in results.Downloads) + { + file.Torrent = null; + } + + return results; + } + public async Task Add(String realDebridId, String hash) { var torrent = new Torrent @@ -89,6 +105,15 @@ namespace RdtClient.Data.Data await _dataContext.SaveChangesAsync(); } + public async Task UpdateCategory(Guid torrentId, String category) + { + var dbTorrent = await _dataContext.Torrents.FirstOrDefaultAsync(m => m.TorrentId == torrentId); + + dbTorrent.Category = category; + + await _dataContext.SaveChangesAsync(); + } + public async Task Delete(Guid id) { var dbTorrent = await _dataContext.Torrents.FirstOrDefaultAsync(m => m.TorrentId == id); diff --git a/server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.Designer.cs b/server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.Designer.cs new file mode 100644 index 0000000..da8cc46 --- /dev/null +++ b/server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.Designer.cs @@ -0,0 +1,392 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using RdtClient.Data.Data; + +namespace RdtClient.Data.Migrations +{ + [DbContext(typeof(DataContext))] + [Migration("20200406172142_Torrents_Add_Category")] + partial class Torrents_Add_Category + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.1.3"); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Name") + .HasColumnType("TEXT") + .HasMaxLength(256); + + b.Property("NormalizedName") + .HasColumnType("TEXT") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT"); + + b.Property("Email") + .HasColumnType("TEXT") + .HasMaxLength(256); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasColumnType("TEXT") + .HasMaxLength(256); + + b.Property("NormalizedUserName") + .HasColumnType("TEXT") + .HasMaxLength(256); + + b.Property("PasswordHash") + .HasColumnType("TEXT"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasColumnType("TEXT") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT"); + + b.Property("ClaimValue") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("TEXT"); + + b.Property("ProviderKey") + .HasColumnType("TEXT"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("RoleId") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("LoginProvider") + .HasColumnType("TEXT"); + + b.Property("Name") + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("RdtClient.Data.Models.Data.Download", b => + { + b.Property("DownloadId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Added") + .HasColumnType("TEXT"); + + b.Property("Link") + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("TorrentId") + .HasColumnType("TEXT"); + + b.HasKey("DownloadId"); + + b.HasIndex("TorrentId"); + + b.ToTable("Downloads"); + }); + + modelBuilder.Entity("RdtClient.Data.Models.Data.Setting", b => + { + b.Property("SettingId") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("SettingId"); + + b.ToTable("Settings"); + + b.HasData( + new + { + SettingId = "RealDebridApiKey", + Type = "String", + Value = "" + }, + new + { + SettingId = "DownloadFolder", + Type = "String", + Value = "C:\\Downloads" + }, + new + { + SettingId = "DownloadLimit", + Type = "Int32", + Value = "10" + }); + }); + + modelBuilder.Entity("RdtClient.Data.Models.Data.Torrent", b => + { + b.Property("TorrentId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Category") + .HasColumnType("TEXT"); + + b.Property("Hash") + .HasColumnType("TEXT"); + + b.Property("RdAdded") + .HasColumnType("TEXT"); + + b.Property("RdEnded") + .HasColumnType("TEXT"); + + b.Property("RdFiles") + .HasColumnType("TEXT"); + + b.Property("RdHost") + .HasColumnType("TEXT"); + + b.Property("RdId") + .HasColumnType("TEXT"); + + b.Property("RdName") + .HasColumnType("TEXT"); + + b.Property("RdProgress") + .HasColumnType("INTEGER"); + + b.Property("RdSeeders") + .HasColumnType("INTEGER"); + + b.Property("RdSize") + .HasColumnType("INTEGER"); + + b.Property("RdSpeed") + .HasColumnType("INTEGER"); + + b.Property("RdSplit") + .HasColumnType("INTEGER"); + + b.Property("RdStatus") + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.HasKey("TorrentId"); + + b.ToTable("Torrents"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("RdtClient.Data.Models.Data.Download", b => + { + b.HasOne("RdtClient.Data.Models.Data.Torrent", "Torrent") + .WithMany("Downloads") + .HasForeignKey("TorrentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.cs b/server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.cs new file mode 100644 index 0000000..9fb5a9d --- /dev/null +++ b/server/RdtClient.Data/Migrations/20200406172142_Torrents_Add_Category.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace RdtClient.Data.Migrations +{ + public partial class Torrents_Add_Category : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Category", + table: "Torrents", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Category", + table: "Torrents"); + } + } +} diff --git a/server/RdtClient.Data/Migrations/DataContextModelSnapshot.cs b/server/RdtClient.Data/Migrations/DataContextModelSnapshot.cs index 91277f7..27cf5d5 100644 --- a/server/RdtClient.Data/Migrations/DataContextModelSnapshot.cs +++ b/server/RdtClient.Data/Migrations/DataContextModelSnapshot.cs @@ -275,6 +275,9 @@ namespace RdtClient.Data.Migrations .ValueGeneratedOnAdd() .HasColumnType("TEXT"); + b.Property("Category") + .HasColumnType("TEXT"); + b.Property("Hash") .HasColumnType("TEXT"); diff --git a/server/RdtClient.Data/Models/Data/Torrent.cs b/server/RdtClient.Data/Models/Data/Torrent.cs index a76bead..1897ea6 100644 --- a/server/RdtClient.Data/Models/Data/Torrent.cs +++ b/server/RdtClient.Data/Models/Data/Torrent.cs @@ -15,6 +15,8 @@ namespace RdtClient.Data.Models.Data public String Hash { get; set; } + public String Category { get; set; } + public TorrentStatus Status { get; set; } [InverseProperty("Torrent")] diff --git a/server/RdtClient.Service/DiConfig.cs b/server/RdtClient.Service/DiConfig.cs index 7797ea4..8216562 100644 --- a/server/RdtClient.Service/DiConfig.cs +++ b/server/RdtClient.Service/DiConfig.cs @@ -9,6 +9,7 @@ namespace RdtClient.Service { services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/server/RdtClient.Service/Models/QBittorrent/AppBuildInfo.cs b/server/RdtClient.Service/Models/QBittorrent/AppBuildInfo.cs new file mode 100644 index 0000000..1a86e37 --- /dev/null +++ b/server/RdtClient.Service/Models/QBittorrent/AppBuildInfo.cs @@ -0,0 +1,26 @@ +using System; +using Newtonsoft.Json; + +namespace RdtClient.Service.Models.QBittorrent +{ + public class AppBuildInfo + { + [JsonProperty("bitness")] + public Int64 Bitness { get; set; } + + [JsonProperty("boost")] + public String Boost { get; set; } + + [JsonProperty("libtorrent")] + public String Libtorrent { get; set; } + + [JsonProperty("openssl")] + public String Openssl { get; set; } + + [JsonProperty("qt")] + public String Qt { get; set; } + + [JsonProperty("zlib")] + public String Zlib { get; set; } + } +} \ No newline at end of file diff --git a/server/RdtClient.Service/Models/QBittorrent/AppPreferences.cs b/server/RdtClient.Service/Models/QBittorrent/AppPreferences.cs new file mode 100644 index 0000000..af35ac9 --- /dev/null +++ b/server/RdtClient.Service/Models/QBittorrent/AppPreferences.cs @@ -0,0 +1,435 @@ +using System; +using Newtonsoft.Json; + +namespace RdtClient.Service.Models.QBittorrent +{ + namespace QuickType + { + public class AppPreferences + { + [JsonProperty("add_trackers")] + public String AddTrackers { get; set; } + + [JsonProperty("add_trackers_enabled")] + public Boolean AddTrackersEnabled { get; set; } + + [JsonProperty("alt_dl_limit")] + public Int64 AltDlLimit { get; set; } + + [JsonProperty("alt_up_limit")] + public Int64 AltUpLimit { get; set; } + + [JsonProperty("alternative_webui_enabled")] + public Boolean AlternativeWebuiEnabled { get; set; } + + [JsonProperty("alternative_webui_path")] + public String AlternativeWebuiPath { get; set; } + + [JsonProperty("announce_ip")] + public String AnnounceIp { get; set; } + + [JsonProperty("announce_to_all_tiers")] + public Boolean AnnounceToAllTiers { get; set; } + + [JsonProperty("announce_to_all_trackers")] + public Boolean AnnounceToAllTrackers { get; set; } + + [JsonProperty("anonymous_mode")] + public Boolean AnonymousMode { get; set; } + + [JsonProperty("async_io_threads")] + public Int64 AsyncIoThreads { get; set; } + + [JsonProperty("auto_delete_mode")] + public Int64 AutoDeleteMode { get; set; } + + [JsonProperty("auto_tmm_enabled")] + public Boolean AutoTmmEnabled { get; set; } + + [JsonProperty("autorun_enabled")] + public Boolean AutorunEnabled { get; set; } + + [JsonProperty("autorun_program")] + public String AutorunProgram { get; set; } + + [JsonProperty("banned_IPs")] + public String BannedIPs { get; set; } + + [JsonProperty("bittorrent_protocol")] + public Int64 BittorrentProtocol { get; set; } + + [JsonProperty("bypass_auth_subnet_whitelist")] + public String BypassAuthSubnetWhitelist { get; set; } + + [JsonProperty("bypass_auth_subnet_whitelist_enabled")] + public Boolean BypassAuthSubnetWhitelistEnabled { get; set; } + + [JsonProperty("bypass_local_auth")] + public Boolean BypassLocalAuth { get; set; } + + [JsonProperty("category_changed_tmm_enabled")] + public Boolean CategoryChangedTmmEnabled { get; set; } + + [JsonProperty("checking_memory_use")] + public Int64 CheckingMemoryUse { get; set; } + + [JsonProperty("create_subfolder_enabled")] + public Boolean CreateSubfolderEnabled { get; set; } + + [JsonProperty("current_interface_address")] + public String CurrentInterfaceAddress { get; set; } + + [JsonProperty("current_network_interface")] + public String CurrentNetworkInterface { get; set; } + + [JsonProperty("dht")] + public Boolean Dht { get; set; } + + [JsonProperty("disk_cache")] + public Int64 DiskCache { get; set; } + + [JsonProperty("disk_cache_ttl")] + public Int64 DiskCacheTtl { get; set; } + + [JsonProperty("dl_limit")] + public Int64 DlLimit { get; set; } + + [JsonProperty("dont_count_slow_torrents")] + public Boolean DontCountSlowTorrents { get; set; } + + [JsonProperty("dyndns_domain")] + public String DyndnsDomain { get; set; } + + [JsonProperty("dyndns_enabled")] + public Boolean DyndnsEnabled { get; set; } + + [JsonProperty("dyndns_password")] + public String DyndnsPassword { get; set; } + + [JsonProperty("dyndns_service")] + public Int64 DyndnsService { get; set; } + + [JsonProperty("dyndns_username")] + public String DyndnsUsername { get; set; } + + [JsonProperty("embedded_tracker_port")] + public Int64 EmbeddedTrackerPort { get; set; } + + [JsonProperty("enable_coalesce_read_write")] + public Boolean EnableCoalesceReadWrite { get; set; } + + [JsonProperty("enable_embedded_tracker")] + public Boolean EnableEmbeddedTracker { get; set; } + + [JsonProperty("enable_multi_connections_from_same_ip")] + public Boolean EnableMultiConnectionsFromSameIp { get; set; } + + [JsonProperty("enable_os_cache")] + public Boolean EnableOsCache { get; set; } + + [JsonProperty("enable_piece_extent_affinity")] + public Boolean EnablePieceExtentAffinity { get; set; } + + [JsonProperty("enable_super_seeding")] + public Boolean EnableSuperSeeding { get; set; } + + [JsonProperty("enable_upload_suggestions")] + public Boolean EnableUploadSuggestions { get; set; } + + [JsonProperty("encryption")] + public Int64 Encryption { get; set; } + + [JsonProperty("export_dir")] + public String ExportDir { get; set; } + + [JsonProperty("export_dir_fin")] + public String ExportDirFin { get; set; } + + [JsonProperty("file_pool_size")] + public Int64 FilePoolSize { get; set; } + + [JsonProperty("incomplete_files_ext")] + public Boolean IncompleteFilesExt { get; set; } + + [JsonProperty("ip_filter_enabled")] + public Boolean IpFilterEnabled { get; set; } + + [JsonProperty("ip_filter_path")] + public String IpFilterPath { get; set; } + + [JsonProperty("ip_filter_trackers")] + public Boolean IpFilterTrackers { get; set; } + + [JsonProperty("limit_lan_peers")] + public Boolean LimitLanPeers { get; set; } + + [JsonProperty("limit_tcp_overhead")] + public Boolean LimitTcpOverhead { get; set; } + + [JsonProperty("limit_utp_rate")] + public Boolean LimitUtpRate { get; set; } + + [JsonProperty("listen_port")] + public Int64 ListenPort { get; set; } + + [JsonProperty("locale")] + public String Locale { get; set; } + + [JsonProperty("lsd")] + public Boolean Lsd { get; set; } + + [JsonProperty("mail_notification_auth_enabled")] + public Boolean MailNotificationAuthEnabled { get; set; } + + [JsonProperty("mail_notification_email")] + public String MailNotificationEmail { get; set; } + + [JsonProperty("mail_notification_enabled")] + public Boolean MailNotificationEnabled { get; set; } + + [JsonProperty("mail_notification_password")] + public String MailNotificationPassword { get; set; } + + [JsonProperty("mail_notification_sender")] + public String MailNotificationSender { get; set; } + + [JsonProperty("mail_notification_smtp")] + public String MailNotificationSmtp { get; set; } + + [JsonProperty("mail_notification_ssl_enabled")] + public Boolean MailNotificationSslEnabled { get; set; } + + [JsonProperty("mail_notification_username")] + public String MailNotificationUsername { get; set; } + + [JsonProperty("max_active_downloads")] + public Int64 MaxActiveDownloads { get; set; } + + [JsonProperty("max_active_torrents")] + public Int64 MaxActiveTorrents { get; set; } + + [JsonProperty("max_active_uploads")] + public Int64 MaxActiveUploads { get; set; } + + [JsonProperty("max_connec")] + public Int64 MaxConnec { get; set; } + + [JsonProperty("max_connec_per_torrent")] + public Int64 MaxConnecPerTorrent { get; set; } + + [JsonProperty("max_ratio")] + public Int64 MaxRatio { get; set; } + + [JsonProperty("max_ratio_act")] + public Int64 MaxRatioAct { get; set; } + + [JsonProperty("max_ratio_enabled")] + public Boolean MaxRatioEnabled { get; set; } + + [JsonProperty("max_seeding_time")] + public Int64 MaxSeedingTime { get; set; } + + [JsonProperty("max_seeding_time_enabled")] + public Boolean MaxSeedingTimeEnabled { get; set; } + + [JsonProperty("max_uploads")] + public Int64 MaxUploads { get; set; } + + [JsonProperty("max_uploads_per_torrent")] + public Int64 MaxUploadsPerTorrent { get; set; } + + [JsonProperty("outgoing_ports_max")] + public Int64 OutgoingPortsMax { get; set; } + + [JsonProperty("outgoing_ports_min")] + public Int64 OutgoingPortsMin { get; set; } + + [JsonProperty("pex")] + public Boolean Pex { get; set; } + + [JsonProperty("preallocate_all")] + public Boolean PreallocateAll { get; set; } + + [JsonProperty("proxy_auth_enabled")] + public Boolean ProxyAuthEnabled { get; set; } + + [JsonProperty("proxy_ip")] + public String ProxyIp { get; set; } + + [JsonProperty("proxy_password")] + public String ProxyPassword { get; set; } + + [JsonProperty("proxy_peer_connections")] + public Boolean ProxyPeerConnections { get; set; } + + [JsonProperty("proxy_port")] + public Int64 ProxyPort { get; set; } + + [JsonProperty("proxy_torrents_only")] + public Boolean ProxyTorrentsOnly { get; set; } + + [JsonProperty("proxy_type")] + public Int64 ProxyType { get; set; } + + [JsonProperty("proxy_username")] + public String ProxyUsername { get; set; } + + [JsonProperty("queueing_enabled")] + public Boolean QueueingEnabled { get; set; } + + [JsonProperty("random_port")] + public Boolean RandomPort { get; set; } + + [JsonProperty("recheck_completed_torrents")] + public Boolean RecheckCompletedTorrents { get; set; } + + [JsonProperty("resolve_peer_countries")] + public Boolean ResolvePeerCountries { get; set; } + + [JsonProperty("rss_auto_downloading_enabled")] + public Boolean RssAutoDownloadingEnabled { get; set; } + + [JsonProperty("rss_max_articles_per_feed")] + public Int64 RssMaxArticlesPerFeed { get; set; } + + [JsonProperty("rss_processing_enabled")] + public Boolean RssProcessingEnabled { get; set; } + + [JsonProperty("rss_refresh_interval")] + public Int64 RssRefreshInterval { get; set; } + + [JsonProperty("save_path")] + public String SavePath { get; set; } + + [JsonProperty("save_path_changed_tmm_enabled")] + public Boolean SavePathChangedTmmEnabled { get; set; } + + [JsonProperty("save_resume_data_interval")] + public Int64 SaveResumeDataInterval { get; set; } + + [JsonProperty("scan_dirs")] + public ScanDirs ScanDirs { get; set; } + + [JsonProperty("schedule_from_hour")] + public Int64 ScheduleFromHour { get; set; } + + [JsonProperty("schedule_from_min")] + public Int64 ScheduleFromMin { get; set; } + + [JsonProperty("schedule_to_hour")] + public Int64 ScheduleToHour { get; set; } + + [JsonProperty("schedule_to_min")] + public Int64 ScheduleToMin { get; set; } + + [JsonProperty("scheduler_days")] + public Int64 SchedulerDays { get; set; } + + [JsonProperty("scheduler_enabled")] + public Boolean SchedulerEnabled { get; set; } + + [JsonProperty("send_buffer_low_watermark")] + public Int64 SendBufferLowWatermark { get; set; } + + [JsonProperty("send_buffer_watermark")] + public Int64 SendBufferWatermark { get; set; } + + [JsonProperty("send_buffer_watermark_factor")] + public Int64 SendBufferWatermarkFactor { get; set; } + + [JsonProperty("slow_torrent_dl_rate_threshold")] + public Int64 SlowTorrentDlRateThreshold { get; set; } + + [JsonProperty("slow_torrent_inactive_timer")] + public Int64 SlowTorrentInactiveTimer { get; set; } + + [JsonProperty("slow_torrent_ul_rate_threshold")] + public Int64 SlowTorrentUlRateThreshold { get; set; } + + [JsonProperty("socket_backlog_size")] + public Int64 SocketBacklogSize { get; set; } + + [JsonProperty("start_paused_enabled")] + public Boolean StartPausedEnabled { get; set; } + + [JsonProperty("stop_tracker_timeout")] + public Int64 StopTrackerTimeout { get; set; } + + [JsonProperty("temp_path")] + public String TempPath { get; set; } + + [JsonProperty("temp_path_enabled")] + public Boolean TempPathEnabled { get; set; } + + [JsonProperty("torrent_changed_tmm_enabled")] + public Boolean TorrentChangedTmmEnabled { get; set; } + + [JsonProperty("up_limit")] + public Int64 UpLimit { get; set; } + + [JsonProperty("upload_choking_algorithm")] + public Int64 UploadChokingAlgorithm { get; set; } + + [JsonProperty("upload_slots_behavior")] + public Int64 UploadSlotsBehavior { get; set; } + + [JsonProperty("upnp")] + public Boolean Upnp { get; set; } + + [JsonProperty("upnp_lease_duration")] + public Int64 UpnpLeaseDuration { get; set; } + + [JsonProperty("use_https")] + public Boolean UseHttps { get; set; } + + [JsonProperty("utp_tcp_mixed_mode")] + public Int64 UtpTcpMixedMode { get; set; } + + [JsonProperty("web_ui_address")] + public String WebUiAddress { get; set; } + + [JsonProperty("web_ui_ban_duration")] + public Int64 WebUiBanDuration { get; set; } + + [JsonProperty("web_ui_clickjacking_protection_enabled")] + public Boolean WebUiClickjackingProtectionEnabled { get; set; } + + [JsonProperty("web_ui_csrf_protection_enabled")] + public Boolean WebUiCsrfProtectionEnabled { get; set; } + + [JsonProperty("web_ui_domain_list")] + public String WebUiDomainList { get; set; } + + [JsonProperty("web_ui_host_header_validation_enabled")] + public Boolean WebUiHostHeaderValidationEnabled { get; set; } + + [JsonProperty("web_ui_https_cert_path")] + public String WebUiHttpsCertPath { get; set; } + + [JsonProperty("web_ui_https_key_path")] + public String WebUiHttpsKeyPath { get; set; } + + [JsonProperty("web_ui_max_auth_fail_count")] + public Int64 WebUiMaxAuthFailCount { get; set; } + + [JsonProperty("web_ui_port")] + public Int64 WebUiPort { get; set; } + + [JsonProperty("web_ui_secure_cookie_enabled")] + public Boolean WebUiSecureCookieEnabled { get; set; } + + [JsonProperty("web_ui_session_timeout")] + public Int64 WebUiSessionTimeout { get; set; } + + [JsonProperty("web_ui_upnp")] + public Boolean WebUiUpnp { get; set; } + + [JsonProperty("web_ui_username")] + public String WebUiUsername { get; set; } + } + + public class ScanDirs + { + } + } +} \ No newline at end of file diff --git a/server/RdtClient.Service/Models/QBittorrent/TorrentCategory.cs b/server/RdtClient.Service/Models/QBittorrent/TorrentCategory.cs new file mode 100644 index 0000000..cd5c679 --- /dev/null +++ b/server/RdtClient.Service/Models/QBittorrent/TorrentCategory.cs @@ -0,0 +1,14 @@ +using System; +using Newtonsoft.Json; + +namespace RdtClient.Service.Models.QBittorrent +{ + public class TorrentCategory + { + [JsonProperty("name")] + public String Name { get; set; } + + [JsonProperty("savePath")] + public String SavePath { get; set; } + } +} diff --git a/server/RdtClient.Service/Models/QBittorrent/TorrentInfo.cs b/server/RdtClient.Service/Models/QBittorrent/TorrentInfo.cs new file mode 100644 index 0000000..61616ed --- /dev/null +++ b/server/RdtClient.Service/Models/QBittorrent/TorrentInfo.cs @@ -0,0 +1,140 @@ +using System; +using Newtonsoft.Json; + +namespace RdtClient.Service.Models.QBittorrent +{ + namespace QuickType + { + public class TorrentInfo + { + [JsonProperty("added_on")] + public Int64 AddedOn { get; set; } + + [JsonProperty("amount_left")] + public Int64 AmountLeft { get; set; } + + [JsonProperty("auto_tmm")] + public Boolean AutoTmm { get; set; } + + [JsonProperty("availability")] + public Decimal Availability { get; set; } + + [JsonProperty("category")] + public String Category { get; set; } + + [JsonProperty("completed")] + public Int64 Completed { get; set; } + + [JsonProperty("completion_on")] + public Int64? CompletionOn { get; set; } + + [JsonProperty("dl_limit")] + public Int64 DlLimit { get; set; } + + [JsonProperty("dlspeed")] + public Int64 Dlspeed { get; set; } + + [JsonProperty("downloaded")] + public Int64 Downloaded { get; set; } + + [JsonProperty("downloaded_session")] + public Int64 DownloadedSession { get; set; } + + [JsonProperty("eta")] + public Int64 Eta { get; set; } + + [JsonProperty("f_l_piece_prio")] + public Boolean FlPiecePrio { get; set; } + + [JsonProperty("force_start")] + public Boolean ForceStart { get; set; } + + [JsonProperty("hash")] + public String Hash { get; set; } + + [JsonProperty("last_activity")] + public Int64 LastActivity { get; set; } + + [JsonProperty("magnet_uri")] + public String MagnetUri { get; set; } + + [JsonProperty("max_ratio")] + public Int64 MaxRatio { get; set; } + + [JsonProperty("max_seeding_time")] + public Int64 MaxSeedingTime { get; set; } + + [JsonProperty("name")] + public String Name { get; set; } + + [JsonProperty("num_complete")] + public Int64 NumComplete { get; set; } + + [JsonProperty("num_incomplete")] + public Int64 NumIncomplete { get; set; } + + [JsonProperty("num_leechs")] + public Int64 NumLeechs { get; set; } + + [JsonProperty("num_seeds")] + public Int64 NumSeeds { get; set; } + + [JsonProperty("priority")] + public Int64 Priority { get; set; } + + [JsonProperty("progress")] + public Decimal Progress { get; set; } + + [JsonProperty("ratio")] + public Int64 Ratio { get; set; } + + [JsonProperty("ratio_limit")] + public Int64 RatioLimit { get; set; } + + [JsonProperty("save_path")] + public String SavePath { get; set; } + + [JsonProperty("seeding_time_limit")] + public Int64 SeedingTimeLimit { get; set; } + + [JsonProperty("seen_complete")] + public Int64 SeenComplete { get; set; } + + [JsonProperty("seq_dl")] + public Boolean SeqDl { get; set; } + + [JsonProperty("size")] + public Int64 Size { get; set; } + + [JsonProperty("state")] + public String State { get; set; } + + [JsonProperty("super_seeding")] + public Boolean SuperSeeding { get; set; } + + [JsonProperty("tags")] + public String Tags { get; set; } + + [JsonProperty("time_active")] + public Int64 TimeActive { get; set; } + + [JsonProperty("total_size")] + public Int64 TotalSize { get; set; } + + [JsonProperty("tracker")] + public String Tracker { get; set; } + + [JsonProperty("up_limit")] + public Int64 UpLimit { get; set; } + + [JsonProperty("uploaded")] + public Int64 Uploaded { get; set; } + + [JsonProperty("uploaded_session")] + public Int64 UploadedSession { get; set; } + + [JsonProperty("upspeed")] + public Int64 Upspeed { get; set; } + } + } +} \ No newline at end of file diff --git a/server/RdtClient.Service/Models/QBittorrent/TorrentProperties.cs b/server/RdtClient.Service/Models/QBittorrent/TorrentProperties.cs new file mode 100644 index 0000000..e90b364 --- /dev/null +++ b/server/RdtClient.Service/Models/QBittorrent/TorrentProperties.cs @@ -0,0 +1,107 @@ +using System; +using Newtonsoft.Json; + +namespace RdtClient.Service.Models.QBittorrent +{ + public class TorrentProperties + { + [JsonProperty("addition_date")] + public Int64 AdditionDate { get; set; } + + [JsonProperty("comment")] + public String Comment { get; set; } + + [JsonProperty("completion_date")] + public Int64 CompletionDate { get; set; } + + [JsonProperty("created_by")] + public String CreatedBy { get; set; } + + [JsonProperty("creation_date")] + public Int64 CreationDate { get; set; } + + [JsonProperty("dl_limit")] + public Int64 DlLimit { get; set; } + + [JsonProperty("dl_speed")] + public Int64 DlSpeed { get; set; } + + [JsonProperty("dl_speed_avg")] + public Int64 DlSpeedAvg { get; set; } + + [JsonProperty("eta")] + public Int64 Eta { get; set; } + + [JsonProperty("last_seen")] + public Int64 LastSeen { get; set; } + + [JsonProperty("nb_connections")] + public Int64 NbConnections { get; set; } + + [JsonProperty("nb_connections_limit")] + public Int64 NbConnectionsLimit { get; set; } + + [JsonProperty("peers")] + public Int64 Peers { get; set; } + + [JsonProperty("peers_total")] + public Int64 PeersTotal { get; set; } + + [JsonProperty("piece_size")] + public Int64 PieceSize { get; set; } + + [JsonProperty("pieces_have")] + public Int64 PiecesHave { get; set; } + + [JsonProperty("pieces_num")] + public Int64 PiecesNum { get; set; } + + [JsonProperty("reannounce")] + public Int64 Reannounce { get; set; } + + [JsonProperty("save_path")] + public String SavePath { get; set; } + + [JsonProperty("seeding_time")] + public Int64 SeedingTime { get; set; } + + [JsonProperty("seeds")] + public Int64 Seeds { get; set; } + + [JsonProperty("seeds_total")] + public Int64 SeedsTotal { get; set; } + + [JsonProperty("share_ratio")] + public Int64 ShareRatio { get; set; } + + [JsonProperty("time_elapsed")] + public Int64 TimeElapsed { get; set; } + + [JsonProperty("total_downloaded")] + public Int64 TotalDownloaded { get; set; } + + [JsonProperty("total_downloaded_session")] + public Int64 TotalDownloadedSession { get; set; } + + [JsonProperty("total_size")] + public Int64 TotalSize { get; set; } + + [JsonProperty("total_uploaded")] + public Int64 TotalUploaded { get; set; } + + [JsonProperty("total_uploaded_session")] + public Int64 TotalUploadedSession { get; set; } + + [JsonProperty("total_wasted")] + public Int64 TotalWasted { get; set; } + + [JsonProperty("up_limit")] + public Int64 UpLimit { get; set; } + + [JsonProperty("up_speed")] + public Int64 UpSpeed { get; set; } + + [JsonProperty("up_speed_avg")] + public Int64 UpSpeedAvg { get; set; } + } +} \ No newline at end of file diff --git a/server/RdtClient.Service/Services/QBittorrent.cs b/server/RdtClient.Service/Services/QBittorrent.cs new file mode 100644 index 0000000..08946b3 --- /dev/null +++ b/server/RdtClient.Service/Services/QBittorrent.cs @@ -0,0 +1,402 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using RdtClient.Data.Enums; +using RdtClient.Service.Models.QBittorrent; +using RdtClient.Service.Models.QBittorrent.QuickType; + +namespace RdtClient.Service.Services +{ + public interface IQBittorrent + { + Task AuthLogin(String userName, String password); + Task AuthLogout(); + Task AppPreferences(); + Task AppDefaultSavePath(); + Task> TorrentInfo(); + Task TorrentProperties(String hash); + Task TorrentsDelete(String hash, Boolean deleteFiles); + Task TorrentsAdd(String url); + Task TorrentsSetCategory(String hash, String category); + Task> TorrentsCategories(); + } + + public class QBittorrent : IQBittorrent + { + private readonly IAuthentication _authentication; + private readonly ISettings _settings; + private readonly ITorrents _torrents; + + public QBittorrent(ISettings settings, IAuthentication authentication, ITorrents torrents) + { + _settings = settings; + _authentication = authentication; + _torrents = torrents; + } + + public async Task AuthLogin(String userName, String password) + { + var login = await _authentication.Login(userName, password); + + return login.Succeeded; + } + + public async Task AuthLogout() + { + await _authentication.Logout(); + } + + public async Task AppPreferences() + { + var preferences = new AppPreferences + { + AddTrackers = "", + AddTrackersEnabled = false, + AltDlLimit = 10240, + AltUpLimit = 10240, + AlternativeWebuiEnabled = false, + AlternativeWebuiPath = "", + AnnounceIp = "", + AnnounceToAllTiers = true, + AnnounceToAllTrackers = false, + AnonymousMode = false, + AsyncIoThreads = 4, + AutoDeleteMode = 0, + AutoTmmEnabled = false, + AutorunEnabled = false, + AutorunProgram = "", + BannedIPs = "", + BittorrentProtocol = 0, + BypassAuthSubnetWhitelist = "", + BypassAuthSubnetWhitelistEnabled = false, + BypassLocalAuth = false, + CategoryChangedTmmEnabled = false, + CheckingMemoryUse = 32, + CreateSubfolderEnabled = true, + CurrentInterfaceAddress = "", + CurrentNetworkInterface = "", + Dht = true, + DiskCache = -1, + DiskCacheTtl = 60, + DlLimit = 0, + DontCountSlowTorrents = false, + DyndnsDomain = "changeme.dyndns.org", + DyndnsEnabled = false, + DyndnsPassword = "", + DyndnsService = 0, + DyndnsUsername = "", + EmbeddedTrackerPort = 9000, + EnableCoalesceReadWrite = true, + EnableEmbeddedTracker = false, + EnableMultiConnectionsFromSameIp = false, + EnableOsCache = true, + EnablePieceExtentAffinity = false, + EnableSuperSeeding = false, + EnableUploadSuggestions = false, + Encryption = 0, + ExportDir = "", + ExportDirFin = "", + FilePoolSize = 40, + IncompleteFilesExt = false, + IpFilterEnabled = false, + IpFilterPath = "", + IpFilterTrackers = false, + LimitLanPeers = true, + LimitTcpOverhead = false, + LimitUtpRate = true, + ListenPort = 31193, + Locale = "en", + Lsd = true, + MailNotificationAuthEnabled = false, + MailNotificationEmail = "", + MailNotificationEnabled = false, + MailNotificationPassword = "", + MailNotificationSender = "qBittorrentNotification@example.com", + MailNotificationSmtp = "smtp.changeme.com", + MailNotificationSslEnabled = false, + MailNotificationUsername = "", + MaxActiveDownloads = 3, + MaxActiveTorrents = 5, + MaxActiveUploads = 3, + MaxConnec = 500, + MaxConnecPerTorrent = 100, + MaxRatio = -1, + MaxRatioAct = 0, + MaxRatioEnabled = false, + MaxSeedingTime = -1, + MaxSeedingTimeEnabled = false, + MaxUploads = -1, + MaxUploadsPerTorrent = -1, + OutgoingPortsMax = 0, + OutgoingPortsMin = 0, + Pex = true, + PreallocateAll = false, + ProxyAuthEnabled = false, + ProxyIp = "0.0.0.0", + ProxyPassword = "", + ProxyPeerConnections = false, + ProxyPort = 8080, + ProxyTorrentsOnly = false, + ProxyType = 0, + ProxyUsername = "", + QueueingEnabled = false, + RandomPort = false, + RecheckCompletedTorrents = false, + ResolvePeerCountries = true, + RssAutoDownloadingEnabled = false, + RssMaxArticlesPerFeed = 50, + RssProcessingEnabled = false, + RssRefreshInterval = 30, + SavePath = "", + SavePathChangedTmmEnabled = false, + SaveResumeDataInterval = 60, + ScanDirs = new ScanDirs(), + ScheduleFromHour = 8, + ScheduleFromMin = 0, + ScheduleToHour = 20, + ScheduleToMin = 0, + SchedulerDays = 0, + SchedulerEnabled = false, + SendBufferLowWatermark = 10, + SendBufferWatermark = 500, + SendBufferWatermarkFactor = 50, + SlowTorrentDlRateThreshold = 2, + SlowTorrentInactiveTimer = 60, + SlowTorrentUlRateThreshold = 2, + SocketBacklogSize = 30, + StartPausedEnabled = false, + StopTrackerTimeout = 1, + TempPath = "", + TempPathEnabled = false, + TorrentChangedTmmEnabled = true, + UpLimit = 0, + UploadChokingAlgorithm = 1, + UploadSlotsBehavior = 0, + Upnp = true, + UpnpLeaseDuration = 0, + UseHttps = false, + UtpTcpMixedMode = 0, + WebUiAddress = "*", + WebUiBanDuration = 3600, + WebUiClickjackingProtectionEnabled = true, + WebUiCsrfProtectionEnabled = true, + WebUiDomainList = "*", + WebUiHostHeaderValidationEnabled = true, + WebUiHttpsCertPath = "", + WebUiHttpsKeyPath = "", + WebUiMaxAuthFailCount = 5, + WebUiPort = 8080, + WebUiSecureCookieEnabled = true, + WebUiSessionTimeout = 3600, + WebUiUpnp = false, + WebUiUsername = "" + }; + + var savePath = await AppDefaultSavePath(); + + preferences.SavePath = savePath; + preferences.TempPath = $"{savePath}temp{Path.DirectorySeparatorChar}"; + + var user = await _authentication.GetUser(); + + preferences.WebUiUsername = user.UserName; + + return preferences; + } + + public async Task AppDefaultSavePath() + { + var downloadPath = await _settings.GetString("DownloadFolder"); + downloadPath = downloadPath.TrimEnd('\\') + .TrimEnd('/'); + downloadPath += Path.DirectorySeparatorChar; + + return downloadPath; + } + + public async Task> TorrentInfo() + { + var savePath = await AppDefaultSavePath(); + + var results = new List(); + + var torrents = await _torrents.Get(); + + var prio = 0; + foreach (var torrent in torrents) + { + var result = new TorrentInfo + { + AddedOn = torrent.RdAdded.ToUnixTimeSeconds(), + AmountLeft = (Int64) (torrent.RdSize * (100.0 - torrent.RdProgress) / 100.0), + AutoTmm = false, + Availability = 2, + Category = torrent.Category ?? "", + Completed = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + CompletionOn = torrent.RdEnded?.ToUnixTimeSeconds(), + DlLimit = -1, + Dlspeed = torrent.RdSpeed ?? 0, + Downloaded = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + DownloadedSession = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + Eta = 0, + FlPiecePrio = false, + ForceStart = false, + Hash = torrent.Hash, + LastActivity = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), + MagnetUri = "", + MaxRatio = -1, + MaxSeedingTime = -1, + Name = torrent.RdName, + NumComplete = 10, + NumIncomplete = 0, + NumLeechs = 100, + NumSeeds = 100, + Priority = ++prio, + Progress = (Int64) (torrent.RdProgress / 100.0), + Ratio = 9999, + RatioLimit = -2, + SavePath = savePath, + SeedingTimeLimit = -2, + SeenComplete = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), + SeqDl = false, + Size = torrent.RdSize, + SuperSeeding = false, + Tags = "", + TimeActive = (Int64) (torrent.RdAdded - DateTimeOffset.UtcNow).TotalMinutes, + TotalSize = torrent.RdSize, + Tracker = "udp://tracker.opentrackr.org:1337", + UpLimit = -1, + Uploaded = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + UploadedSession = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + Upspeed = torrent.RdSpeed ?? 0, + State = torrent.Status switch + { + TorrentStatus.RealDebrid => "downloading", + TorrentStatus.WaitingForDownload => "downloading", + TorrentStatus.Downloading => "downloading", + TorrentStatus.Finished => "pausedUP", + TorrentStatus.Error => "error", + _ => throw new ArgumentOutOfRangeException() + } + }; + + results.Add(result); + } + + return results; + } + + public async Task TorrentProperties(String hash) + { + var savePath = await AppDefaultSavePath(); + + var torrent = await _torrents.GetByHash(hash); + + if (torrent == null) + { + return null; + } + + var result = new TorrentProperties + { + AdditionDate = torrent.RdAdded.ToUnixTimeSeconds(), + Comment = "RealDebridClient ", + CompletionDate = torrent.RdEnded?.ToUnixTimeSeconds() ?? -1, + CreatedBy = "RealDebridClient ", + CreationDate = torrent.RdAdded.ToUnixTimeSeconds(), + DlLimit = -1, + DlSpeed = torrent.RdSpeed ?? 0, + DlSpeedAvg = torrent.RdSpeed ?? 0, + Eta = 0, + LastSeen = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), + NbConnections = 0, + NbConnectionsLimit = 100, + Peers = 0, + PeersTotal = 2, + PieceSize = torrent.Files.Count > 0 ? torrent.RdSize / torrent.Files.Count : 0, + PiecesHave = torrent.Downloads.Count(m => m.Status == DownloadStatus.Finished), + PiecesNum = torrent.Files.Count, + Reannounce = 0, + SavePath = savePath, + SeedingTime = torrent.RdEnded.HasValue ? (Int32) (DateTimeOffset.UtcNow - torrent.RdEnded.Value).TotalSeconds : 0, + Seeds = 100, + SeedsTotal = 100, + ShareRatio = 9999, + TimeElapsed = (Int64) (torrent.RdAdded - DateTimeOffset.UtcNow).TotalMinutes, + TotalDownloaded = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + TotalDownloadedSession = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + TotalSize = torrent.RdSize, + TotalUploaded = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + TotalUploadedSession = (Int64) (torrent.RdSize * (torrent.RdProgress / 100.0)), + TotalWasted = 0, + UpLimit = -1, + UpSpeed = torrent.RdSpeed ?? 0, + UpSpeedAvg = torrent.RdSpeed ?? 0 + }; + + return result; + } + + public async Task TorrentsDelete(String hash, Boolean deleteFiles) + { + var torrent = await _torrents.GetByHash(hash); + + if (torrent == null) + { + return; + } + + await _torrents.Delete(torrent.TorrentId); + + if (deleteFiles) + { + var savePath = await AppDefaultSavePath(); + + var torrentPath = Path.Combine(savePath, torrent.RdName); + + if (Directory.Exists(torrentPath)) + { + Directory.Delete(torrentPath, true); + } + } + } + + public async Task TorrentsAdd(String url) + { + await _torrents.UploadMagnet(url); + } + + public async Task TorrentsSetCategory(String hash, String category) + { + await _torrents.UpdateCategory(hash, category); + } + + public async Task> TorrentsCategories() + { + var torrents = await _torrents.Get(); + + var savePath = await AppDefaultSavePath(); + + var torrentsToGroup = torrents.Where(m => !String.IsNullOrWhiteSpace(m.Category)) + .ToList(); + + var results = new Dictionary(); + + if (torrentsToGroup.Count > 0) + { + results = torrentsToGroup.GroupBy(m => m.Category) + .First() + .ToDictionary(m => m.Category, + m => new TorrentCategory + { + Name = m.Category, + SavePath = savePath + }); + } + + return results; + } + } +} \ No newline at end of file diff --git a/server/RdtClient.Service/Services/Torrents.cs b/server/RdtClient.Service/Services/Torrents.cs index 02c8fe3..704bc11 100644 --- a/server/RdtClient.Service/Services/Torrents.cs +++ b/server/RdtClient.Service/Services/Torrents.cs @@ -15,8 +15,10 @@ namespace RdtClient.Service.Services public interface ITorrents { Task> Get(); - Task Get(Guid id); + Task GetById(Guid id); + Task GetByHash(String hash); Task> Update(); + Task UpdateCategory(String hash, String category); Task UploadMagnet(String magnetLink); Task UploadFile(Byte[] bytes); Task Delete(Guid id); @@ -88,9 +90,23 @@ namespace RdtClient.Service.Services return torrents; } - public async Task Get(Guid id) + public async Task GetById(Guid id) { - var torrent = await _torrentData.Get(id); + var torrent = await _torrentData.GetById(id); + + if (torrent != null) + { + var rdTorrent = await RdNetClient.TorrentInfoAsync(torrent.RdId); + + await Update(torrent, rdTorrent); + } + + return torrent; + } + + public async Task GetByHash(String hash) + { + var torrent = await _torrentData.GetByHash(hash); if (torrent != null) { @@ -123,7 +139,7 @@ namespace RdtClient.Service.Services if (torrent == null) { var newTorrent = await _torrentData.Add(rdTorrent.Id, rdTorrent.Hash); - await Get(newTorrent.TorrentId); + await GetById(newTorrent.TorrentId); } else { @@ -149,6 +165,18 @@ namespace RdtClient.Service.Services } } + public async Task UpdateCategory(String hash, String category) + { + var torrent = await _torrentData.GetByHash(hash); + + if (torrent == null) + { + return; + } + + await _torrentData.UpdateCategory(torrent.TorrentId, category); + } + public async Task UploadMagnet(String magnetLink) { var magnet = MonoTorrent.MagnetLink.Parse(magnetLink); @@ -169,7 +197,7 @@ namespace RdtClient.Service.Services public async Task Delete(Guid id) { - var torrent = await Get(id); + var torrent = await GetById(id); if (torrent != null) { @@ -180,7 +208,7 @@ namespace RdtClient.Service.Services public async Task Download(Guid id) { - var torrent = await _torrentData.Get(id); + var torrent = await _torrentData.GetById(id); await _downloads.DeleteForTorrent(id); diff --git a/server/RdtClient.Web/Controllers/QBittorrentController.cs b/server/RdtClient.Web/Controllers/QBittorrentController.cs new file mode 100644 index 0000000..df0f92e --- /dev/null +++ b/server/RdtClient.Web/Controllers/QBittorrentController.cs @@ -0,0 +1,419 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using RdtClient.Service.Models.QBittorrent; +using RdtClient.Service.Models.QBittorrent.QuickType; +using RdtClient.Service.Services; + + +namespace RdtClient.Web.Controllers +{ + /// + /// This API behaves as a regular QBittorrent 4+ API + /// Documentation is found here: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation + /// + [ApiController] + [Route("api/v2")] + public class QBittorrentController : Controller + { + private readonly IQBittorrent _qBittorrent; + + public QBittorrentController(IQBittorrent qBittorrent) + { + _qBittorrent = qBittorrent; + } + + [AllowAnonymous] + [Route("auth/login")] + [HttpGet] + public async Task AuthLogin([FromQuery] QBAuthLoginRequest request) + { + try + { + var result = await _qBittorrent.AuthLogin(request.UserName, request.Password); + + if (result) + { + return Ok("Ok."); + } + + return Ok("Fails."); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [AllowAnonymous] + [Route("auth/login")] + [HttpPost] + public async Task AuthLoginPost([FromBody] QBAuthLoginRequest request) + { + return await AuthLogin(request); + } + + [Authorize] + [Route("auth/logout")] + [HttpGet] + [HttpPost] + public async Task AuthLogout() + { + try + { + await _qBittorrent.AuthLogout(); + return Ok(); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("app/version")] + [HttpGet] + [HttpPost] + public ActionResult AppVersion() + { + return Ok("v4.2.3"); + } + + [Authorize] + [Route("app/webapiVersion")] + [HttpGet] + [HttpPost] + public ActionResult AppWebVersion() + { + return Ok("2.4.1"); + } + + [Authorize] + [Route("app/buildInfo")] + [HttpGet] + [HttpPost] + public ActionResult AppBuildInfo() + { + var result = new AppBuildInfo + { + Bitness = 64, + Boost = "1.72.0", + Libtorrent = "1.2.5.0", + Openssl = "1.1.1f", + Qt = "5.13.2", + Zlib = "1.2.11" + }; + return Ok(result); + } + + [Authorize] + [Route("app/shutdown")] + [HttpGet] + [HttpPost] + public ActionResult AppShutdown() + { + return Ok(); + } + + [Authorize] + [Route("app/preferences")] + [HttpGet] + [HttpPost] + public async Task> AppPreferences() + { + try + { + var result = await _qBittorrent.AppPreferences(); + return Ok(result); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("app/setPreferences")] + [HttpGet] + [HttpPost] + public ActionResult AppSetPreferences() + { + return Ok(); + } + + [Authorize] + [Route("app/defaultSavePath")] + [HttpGet] + [HttpPost] + public async Task> AppDefaultSavePath() + { + try + { + var result = await _qBittorrent.AppDefaultSavePath(); + return Ok(result); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/info")] + [HttpGet] + [HttpPost] + public async Task>> TorrentsInfo() + { + try + { + var result = await _qBittorrent.TorrentInfo(); + return Ok(result); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/properties")] + [HttpGet] + public async Task>> TorrentsProperties([FromQuery] QBTorrentsHashRequest request) + { + try + { + var result = await _qBittorrent.TorrentProperties(request.Hash); + + if (result == null) + { + return NotFound(); + } + + return Ok(result); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/properties")] + [HttpPost] + public async Task>> TorrentsPropertiesPost([FromBody] QBTorrentsHashRequest request) + { + return await TorrentsProperties(request); + } + + [Authorize] + [Route("torrents/pause")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsPause() + { + return Ok(); + } + + [Authorize] + [Route("torrents/resume")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsResume() + { + return Ok(); + } + + [Authorize] + [Route("torrents/setShareLimits")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsSetShareLimits() + { + return Ok(); + } + + [Authorize] + [Route("torrents/delete")] + [HttpGet] + public async Task TorrentsDelete([FromQuery] QBTorrentsDeleteRequest request) + { + try + { + var hashes = request.Hashes.Split("|"); + + foreach (var hash in hashes) + { + await _qBittorrent.TorrentsDelete(hash, request.DeleteFiles); + } + + return Ok(); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/delete")] + [HttpPost] + public async Task TorrentsDeletePost([FromBody] QBTorrentsDeleteRequest request) + { + return await TorrentsDelete(request); + } + + [Authorize] + [Route("torrents/add")] + [HttpGet] + public async Task TorrentsAdd([FromQuery] QBTorrentsAddRequest request) + { + try + { + var urls = request.Urls.Split("\n"); + + foreach (var url in urls) + { + await _qBittorrent.TorrentsAdd(url.Trim()); + } + + return Ok(); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/add")] + [HttpPost] + public async Task TorrentsAddPost([FromBody] QBTorrentsAddRequest request) + { + return await TorrentsAdd(request); + } + + [Authorize] + [Route("torrents/setCategory")] + [HttpGet] + public async Task TorrentsSetCategory([FromQuery] QBTorrentsSetCategoryRequest request) + { + try + { + var hashes = request.Hashes.Split("|"); + + foreach (var hash in hashes) + { + await _qBittorrent.TorrentsSetCategory(hash, request.Category); + } + + return Ok(); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/setCategory")] + [HttpPost] + public async Task TorrentsSetCategoryPost([FromBody] QBTorrentsSetCategoryRequest request) + { + return await TorrentsSetCategory(request); + } + + [Authorize] + [Route("torrents/categories")] + [HttpGet] + [HttpPost] + public async Task>> TorrentsCategories() + { + try + { + var categories = await _qBittorrent.TorrentsCategories(); + return Ok(categories); + } + catch (Exception ex) + { + return BadRequest(ex.Message); + } + } + + [Authorize] + [Route("torrents/createCategory")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsCreateCategory() + { + return Ok(); + } + + [Authorize] + [Route("torrents/editCategory")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsEditCategory() + { + return Ok(); + } + + [Authorize] + [Route("torrents/removeCategories")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsRemoveCategories() + { + return Ok(); + } + + [Authorize] + [Route("torrents/setForcestart")] + [HttpGet] + [HttpPost] + public ActionResult TorrentsSetForceStart([FromQuery] QBTorrentsHashRequest request) + { + return Ok(); + } + } + + public class QBAuthLoginRequest + { + public String UserName { get; set; } + public String Password { get; set; } + } + + public class QBTorrentsHashRequest + { + public String Hash { get; set; } + } + + public class QBTorrentsDeleteRequest + { + public String Hashes { get; set; } + public Boolean DeleteFiles { get; set; } + } + + public class QBTorrentsAddRequest + { + public String Urls { get; set; } + } + + public class QBTorrentsSetCategoryRequest + { + public String Hashes { get; set; } + public String Category { get; set; } + } + + public class QbTorrentsCreateCategoryRequest + { + public String Category { get; set; } + public String SavePath { get; set; } + } + + public class QbTorrentsRemoveCategoryRequest + { + public String Categories { get; set; } + } +} \ No newline at end of file diff --git a/server/RdtClient.Web/Controllers/TorrentsController.cs b/server/RdtClient.Web/Controllers/TorrentsController.cs index f2f373a..adf5a63 100644 --- a/server/RdtClient.Web/Controllers/TorrentsController.cs +++ b/server/RdtClient.Web/Controllers/TorrentsController.cs @@ -44,7 +44,7 @@ namespace RdtClient.Web.Controllers { try { - var result = await _torrents.Get(id); + var result = await _torrents.GetById(id); if (result == null) { diff --git a/server/RdtClient.Web/Program.cs b/server/RdtClient.Web/Program.cs index 7023f9f..46c8501 100644 --- a/server/RdtClient.Web/Program.cs +++ b/server/RdtClient.Web/Program.cs @@ -20,7 +20,9 @@ namespace RdtClient.Web .CreateDefaultBuilder(args) .ConfigureLogging(logging => { - logging.AddFile("app.log"); + logging.ClearProviders(); + logging.AddConsole(); + logging.AddFile($"{AppContext.BaseDirectory}app.log"); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); } diff --git a/server/RdtClient.Web/RdtClient.Web.csproj b/server/RdtClient.Web/RdtClient.Web.csproj index b32f011..cee51d4 100644 --- a/server/RdtClient.Web/RdtClient.Web.csproj +++ b/server/RdtClient.Web/RdtClient.Web.csproj @@ -4,14 +4,11 @@ netcoreapp3.1 - - - - + @@ -21,6 +18,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/server/RdtClient.Web/Startup.cs b/server/RdtClient.Web/Startup.cs index 0b5e6d8..5458c7c 100644 --- a/server/RdtClient.Web/Startup.cs +++ b/server/RdtClient.Web/Startup.cs @@ -10,6 +10,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using RdtClient.Data; using RdtClient.Data.Data; using RdtClient.Data.Models.Internal; @@ -35,7 +36,8 @@ namespace RdtClient.Web services.AddDbContext(options => options.UseSqlite(DataContext.ConnectionString)); - services.AddControllers(); + services.AddControllers() + .AddNewtonsoftJson(); services.AddSpaStaticFiles(configuration => { configuration.RootPath = "wwwroot"; }); @@ -80,6 +82,7 @@ namespace RdtClient.Web context.Response.StatusCode = StatusCodes.Status401Unauthorized; return Task.CompletedTask; }; + options.Cookie.Name = "SID"; }); services.AddHangfire(configuration => configuration @@ -94,7 +97,7 @@ namespace RdtClient.Web Service.DiConfig.Config(services); } - public void Configure(IApplicationBuilder app, IWebHostEnvironment env, DataContext dataContext, IScheduler scheduler) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger logger, DataContext dataContext, IScheduler scheduler) { if (env.IsDevelopment()) { @@ -106,9 +109,15 @@ namespace RdtClient.Web app.UseHttpsRedirection(); } - app.UseDefaultFiles(); + app.Use(async (context, next) => + { + await next.Invoke(); - app.UseSpaStaticFiles(); + if (context.Response.StatusCode >= 404) + { + logger.LogWarning($"404: {context.Request.Path.Value}"); + } + }); app.UseRouting(); @@ -120,8 +129,16 @@ namespace RdtClient.Web app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); - app.UseSpa(spa => { spa.Options.SourcePath = "wwwroot"; }); - + app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api"), builder => + { + builder.UseSpaStaticFiles(); + builder.UseSpa(spa => + { + spa.Options.SourcePath = "wwwroot"; + spa.Options.DefaultPage = "/index.html"; + }); + }); + dataContext.Migrate(); scheduler.Start(); diff --git a/server/RdtClient.Web/app.log b/server/RdtClient.Web/app.log deleted file mode 100644 index 9312cd7..0000000 --- a/server/RdtClient.Web/app.log +++ /dev/null @@ -1,911 +0,0 @@ -2020-04-03T15:59:20.1355273-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T15:59:20.1385649-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T15:59:20.2294123-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T15:59:20.2294368-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T15:59:20.2510079-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:17836:3146ca38 successfully announced in 101.8542 ms -2020-04-03T15:59:20.2510111-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:17836:f605d0e0 successfully announced in 20.7292 ms -2020-04-03T15:59:20.2541883-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:17836:3146ca38 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T15:59:20.2541883-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:17836:f605d0e0 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T15:59:20.2588662-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:17836:f605d0e0 all the dispatchers started -2020-04-03T15:59:20.2589265-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:17836:3146ca38 all the dispatchers started -2020-04-03T15:59:20.9901692-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-03T15:59:20.9902829-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-03T15:59:20.9903021-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-03T15:59:22.6292638-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T15:59:22.6322230-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T15:59:22.7242705-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T15:59:22.7243034-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T15:59:22.7452766-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc successfully announced in 19.9586 ms -2020-04-03T15:59:22.7452765-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 successfully announced in 101.7602 ms -2020-04-03T15:59:22.7481327-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T15:59:22.7481351-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T15:59:22.7533167-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 all the dispatchers started -2020-04-03T15:59:22.7535232-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc all the dispatchers started -2020-04-03T15:59:23.4204963-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-03T15:59:23.4206249-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-03T15:59:23.4206510-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-03T15:59:30.7772267-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc caught stopping signal... -2020-04-03T15:59:30.7779767-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application is shutting down... -2020-04-03T15:59:30.7783343-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc caught stopped signal... -2020-04-03T15:59:30.7794920-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 caught stopping signal... -2020-04-03T15:59:30.7796436-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 caught stopped signal... -2020-04-03T15:59:30.7812297-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 All dispatchers stopped -2020-04-03T15:59:30.7812297-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc All dispatchers stopped -2020-04-03T15:59:30.7828238-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 successfully reported itself as stopped in 0.2783 ms -2020-04-03T15:59:30.7828222-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc successfully reported itself as stopped in 0.2778 ms -2020-04-03T15:59:30.7828386-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:15034db2 has been stopped in total 3.303 ms -2020-04-03T15:59:30.7828431-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25392:c48269cc has been stopped in total 5.4344 ms -2020-04-03T15:59:49.2420348-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T15:59:49.2449966-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T15:59:49.7330627-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T15:59:49.7342224-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T15:59:49.7767552-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:7656:238a3170 successfully announced in 518.619 ms -2020-04-03T15:59:49.7778417-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:7656:b384ecba successfully announced in 37.4892 ms -2020-04-03T15:59:49.7897107-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:7656:238a3170 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T15:59:49.7907947-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:7656:b384ecba is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T15:59:49.9335939-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:7656:238a3170 all the dispatchers started -2020-04-03T15:59:49.9493934-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:7656:b384ecba all the dispatchers started -2020-04-03T15:59:50.8034032-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-03T15:59:50.8108739-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-03T15:59:50.8127580-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-03T16:06:29.6254854-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T16:06:29.6288727-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T16:06:29.7314839-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T16:06:29.7315143-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T16:06:29.7529384-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18896:dd12c44a successfully announced in 111.5091 ms -2020-04-03T16:06:29.7529396-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18896:15c956d5 successfully announced in 20.4625 ms -2020-04-03T16:06:29.7557415-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18896:dd12c44a is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T16:06:29.7557411-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18896:15c956d5 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T16:06:29.7606532-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18896:15c956d5 all the dispatchers started -2020-04-03T16:06:29.7608761-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18896:dd12c44a all the dispatchers started -2020-04-03T16:06:30.9858222-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-03T16:06:30.9940710-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-03T16:06:30.9966766-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-03T17:20:18.4268508-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T17:20:18.4340796-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T17:20:18.6487165-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T17:20:18.6500981-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T17:20:18.6947841-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:21168:a6490904 successfully announced in 34.9489 ms -2020-04-03T17:20:18.6960854-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:21168:b2e9a60c successfully announced in 230.7784 ms -2020-04-03T17:20:18.7105510-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:21168:a6490904 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T17:20:18.7121052-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:21168:b2e9a60c is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T17:20:18.8720117-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:21168:a6490904 all the dispatchers started -2020-04-03T17:20:18.8774595-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:21168:b2e9a60c all the dispatchers started -2020-04-03T17:20:19.7386911-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-03T17:20:19.7416238-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-03T17:20:19.7486505-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-03T17:59:08.0700362-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T17:59:08.0750113-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T17:59:08.2398601-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-03T17:59:08.2411315-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-03T17:59:08.2913718-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10716:5ebe162c successfully announced in 42.0268 ms -2020-04-03T17:59:08.2925085-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10716:fb956c19 successfully announced in 197.5027 ms -2020-04-03T17:59:08.3038936-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10716:5ebe162c is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T17:59:08.3049895-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10716:fb956c19 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-03T17:59:08.4396784-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10716:5ebe162c all the dispatchers started -2020-04-03T17:59:08.4538634-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10716:fb956c19 all the dispatchers started -2020-04-03T17:59:09.4423137-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-03T17:59:09.4523143-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-03T17:59:09.4550262-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T13:36:51.3899679-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T13:36:51.3954070-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T13:36:52.2046648-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T13:36:52.2058469-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T13:36:52.2165588-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18576:7232176f successfully announced in 5.629 ms -2020-04-04T13:36:52.2175955-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18576:0c930dc4 successfully announced in 783.68 ms -2020-04-04T13:36:52.2258088-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18576:0c930dc4 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T13:36:52.2270592-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18576:7232176f is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T13:36:52.3608248-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18576:0c930dc4 all the dispatchers started -2020-04-04T13:36:52.3651180-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18576:7232176f all the dispatchers started -2020-04-04T13:36:53.3815332-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T13:36:53.3835819-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T13:36:53.3855069-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T13:39:17.4290475-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T13:39:17.4351614-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T13:39:17.6188800-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T13:39:17.6200228-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T13:39:17.6633116-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12312:46ba0401 successfully announced in 205.437 ms -2020-04-04T13:39:17.6653058-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12312:626ef5ce successfully announced in 36.9854 ms -2020-04-04T13:39:17.6810736-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12312:46ba0401 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T13:39:17.6821454-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12312:626ef5ce is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T13:39:17.8313892-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12312:626ef5ce all the dispatchers started -2020-04-04T13:39:17.8518228-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12312:46ba0401 all the dispatchers started -2020-04-04T13:39:18.6777049-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T13:39:18.6853112-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T13:39:18.6872717-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T13:45:52.2178972-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T13:45:52.2209059-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T13:45:52.7257245-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T13:45:52.7268420-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T13:45:52.7605590-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25428:371ab538 successfully announced in 29.31 ms -2020-04-04T13:45:52.7616163-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25428:beb90aed successfully announced in 527.3207 ms -2020-04-04T13:45:52.7947890-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25428:371ab538 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T13:45:52.7958992-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25428:beb90aed is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T13:45:52.9335865-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25428:beb90aed all the dispatchers started -2020-04-04T13:45:52.9433737-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25428:371ab538 all the dispatchers started -2020-04-04T13:45:53.7610065-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T13:45:53.7667118-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T13:45:53.7686187-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:06:51.9875312-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:06:51.9910970-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:06:52.4849160-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:06:52.4860716-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:06:52.5226185-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:4496:e9cb1104 successfully announced in 517.9776 ms -2020-04-04T14:06:52.5276877-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:4496:2aa9fc9e successfully announced in 32.1255 ms -2020-04-04T14:06:52.5356524-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:4496:2aa9fc9e is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:06:52.5368007-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:4496:e9cb1104 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:06:52.6798034-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:4496:e9cb1104 all the dispatchers started -2020-04-04T14:06:52.6843382-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:4496:2aa9fc9e all the dispatchers started -2020-04-04T14:06:53.5337779-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:06:53.5419397-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:06:53.5438903-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:09:28.6901247-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:09:28.6934944-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:09:28.8003885-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:09:28.8004416-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:09:28.8235716-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11712:2f63d054 successfully announced in 22.2108 ms -2020-04-04T14:09:28.8235763-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11712:6de68e38 successfully announced in 117.3382 ms -2020-04-04T14:09:28.8266785-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11712:6de68e38 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:09:28.8266804-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11712:2f63d054 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:09:28.8331305-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11712:6de68e38 all the dispatchers started -2020-04-04T14:09:28.8332117-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11712:2f63d054 all the dispatchers started -2020-04-04T14:09:30.0597550-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:09:30.0661109-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:09:30.0679982-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:10:30.2700465-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18158513750708060161", Request ID "80000002-000c-fc00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.Text.Json.JsonException: A possible object cycle was detected which is not supported. This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. - at System.Text.Json.ThrowHelper.ThrowInvalidOperationException_SerializerCycleDetected(Int32 maxDepth) - at System.Text.Json.JsonSerializer.Write(Utf8JsonWriter writer, Int32 originalWriterDepth, Int32 flushThreshold, JsonSerializerOptions options, WriteStack& state) - at System.Text.Json.JsonSerializer.WriteAsyncCore(Stream utf8Json, Object value, Type inputType, JsonSerializerOptions options, CancellationToken cancellationToken) - at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding) - at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding) - at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|27_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) - at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) - at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-04T14:11:12.4711056-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:11:12.4740177-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:11:12.5685353-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:11:12.5685678-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:11:12.5896902-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11556:f733969e successfully announced in 104.0185 ms -2020-04-04T14:11:12.5896902-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11556:85c7f28f successfully announced in 20.4301 ms -2020-04-04T14:11:12.5927719-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11556:85c7f28f is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:11:12.5927773-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11556:f733969e is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:11:12.5982186-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11556:85c7f28f all the dispatchers started -2020-04-04T14:11:12.5982679-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11556:f733969e all the dispatchers started -2020-04-04T14:11:13.8266479-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:11:13.8300908-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:11:13.8397525-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:23:21.7687075-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:23:21.7715620-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:23:21.8650133-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:23:21.8650397-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:23:21.8862045-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:13516:63077182 successfully announced in 103.9192 ms -2020-04-04T14:23:21.8862045-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:13516:8f1cdbd3 successfully announced in 19.9902 ms -2020-04-04T14:23:21.8889891-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:13516:63077182 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:23:21.8889884-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:13516:8f1cdbd3 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:23:21.8939088-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:13516:63077182 all the dispatchers started -2020-04-04T14:23:21.8939936-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:13516:8f1cdbd3 all the dispatchers started -2020-04-04T14:23:23.0689646-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:23:23.0709673-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:23:23.0779228-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:24:37.9847342-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:24:37.9882985-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:24:38.0825819-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:24:38.0826064-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:24:38.1036306-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22580:c1366df7 successfully announced in 103.9479 ms -2020-04-04T14:24:38.1036305-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22580:e3e831b7 successfully announced in 20.0026 ms -2020-04-04T14:24:38.1065641-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22580:c1366df7 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:24:38.1065662-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22580:e3e831b7 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:24:38.1114065-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22580:e3e831b7 all the dispatchers started -2020-04-04T14:24:38.1114793-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22580:c1366df7 all the dispatchers started -2020-04-04T14:24:39.2282210-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:24:39.2423550-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:24:39.2447909-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:28:26.3492596-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:28:26.3544781-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:28:26.5174135-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:28:26.5187379-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:28:26.5578223-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20488:c6bc92b2 successfully announced in 182.3826 ms -2020-04-04T14:28:26.5588998-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20488:20d17df5 successfully announced in 34.3576 ms -2020-04-04T14:28:26.5704666-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20488:c6bc92b2 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:28:26.5716322-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20488:20d17df5 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:28:26.7149113-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20488:20d17df5 all the dispatchers started -2020-04-04T14:28:26.7226988-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20488:c6bc92b2 all the dispatchers started -2020-04-04T14:28:27.5476942-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:28:27.5548312-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:28:27.5565374-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:29:22.4970867-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:29:22.5000868-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:29:22.5972226-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:29:22.5972498-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:29:22.6185406-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:8704:7f562bd0 successfully announced in 20.3044 ms -2020-04-04T14:29:22.6185503-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:8704:25c03ed6 successfully announced in 107.2263 ms -2020-04-04T14:29:22.6212883-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:8704:25c03ed6 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:29:22.6212868-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:8704:7f562bd0 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:29:22.6272480-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:8704:25c03ed6 all the dispatchers started -2020-04-04T14:29:22.6275399-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:8704:7f562bd0 all the dispatchers started -2020-04-04T14:29:23.8020576-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:29:23.8092332-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:29:23.8114626-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:33:29.3029557-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:33:29.3060421-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:33:29.3995563-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:33:29.3996017-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:33:29.4210320-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11468:78e298c5 successfully announced in 103.7016 ms -2020-04-04T14:33:29.4210325-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11468:79ee0690 successfully announced in 20.3431 ms -2020-04-04T14:33:29.4238373-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11468:78e298c5 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:33:29.4238390-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11468:79ee0690 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:33:29.4293346-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11468:78e298c5 all the dispatchers started -2020-04-04T14:33:29.4294031-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:11468:79ee0690 all the dispatchers started -2020-04-04T14:33:30.5171651-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:33:30.5207118-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:33:30.5262510-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:35:26.4931298-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:35:26.4960740-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:35:26.5902385-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:35:26.5902725-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:35:26.6112554-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9364:548bcc22 successfully announced in 20.0425 ms -2020-04-04T14:35:26.6112554-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9364:a39fa135 successfully announced in 104.5842 ms -2020-04-04T14:35:26.6138703-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9364:548bcc22 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:35:26.6138680-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9364:a39fa135 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:35:26.6186498-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9364:a39fa135 all the dispatchers started -2020-04-04T14:35:26.6187979-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9364:548bcc22 all the dispatchers started -2020-04-04T14:35:27.7550471-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:35:27.7577200-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:35:27.7656669-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:36:13.4963403-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:36:13.4995347-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:36:13.5937296-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:36:13.5937661-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:36:13.6136017-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:24484:d3f096b7 successfully announced in 102.8649 ms -2020-04-04T14:36:13.6136017-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:24484:0486235c successfully announced in 18.8774 ms -2020-04-04T14:36:13.6161824-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:24484:0486235c is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:36:13.6161810-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:24484:d3f096b7 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:36:13.6211768-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:24484:0486235c all the dispatchers started -2020-04-04T14:36:13.6212520-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:24484:d3f096b7 all the dispatchers started -2020-04-04T14:36:14.7116432-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:36:14.7193962-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:36:14.7217224-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:44:06.0389258-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18302628887244309062", Request ID "80000247-0000-fe00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.TryServeStaticFile(HttpContext context, String contentType, PathString subPath) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-04T14:44:07.1916383-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18302628930193982207", Request ID "80000300-000a-fe00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.TryServeStaticFile(HttpContext context, String contentType, PathString subPath) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-04T14:47:54.0323392-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:47:54.0367216-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:47:54.1985129-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:47:54.1996782-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:47:54.2766426-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9924:7a1f1a6b successfully announced in 70.8826 ms -2020-04-04T14:47:54.2806642-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9924:d0351e6f successfully announced in 214.1212 ms -2020-04-04T14:47:54.2889140-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9924:7a1f1a6b is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:47:54.2900438-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9924:d0351e6f is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:47:54.4139151-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9924:d0351e6f all the dispatchers started -2020-04-04T14:47:54.4368669-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9924:7a1f1a6b all the dispatchers started -2020-04-04T14:47:55.2715624-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:47:55.2771286-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:47:55.2789075-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:48:49.5565338-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:48:49.5594208-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:48:49.6547594-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:48:49.6547886-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:48:49.6754648-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22936:b12db8cb successfully announced in 105.0262 ms -2020-04-04T14:48:49.6754648-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22936:fd149353 successfully announced in 19.6826 ms -2020-04-04T14:48:49.6783402-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22936:b12db8cb is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:48:49.6783431-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22936:fd149353 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:48:50.1962026-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22936:fd149353 all the dispatchers started -2020-04-04T14:48:50.1981452-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22936:b12db8cb all the dispatchers started -2020-04-04T14:48:51.0147387-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:48:51.0220660-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:48:51.0239132-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-04T14:50:09.5762316-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:50:09.5792141-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:50:09.6739724-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-04T14:50:09.6740028-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-04T14:50:09.6944222-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18196:9c827089 successfully announced in 19.5569 ms -2020-04-04T14:50:09.6944222-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18196:a1cafa69 successfully announced in 104.5052 ms -2020-04-04T14:50:09.6970626-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18196:9c827089 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:50:09.6970626-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18196:a1cafa69 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-04T14:50:09.7022113-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18196:9c827089 all the dispatchers started -2020-04-04T14:50:09.7024526-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18196:a1cafa69 all the dispatchers started -2020-04-04T14:50:10.8721989-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-04T14:50:10.8807198-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-04T14:50:10.8830457-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T13:45:28.3326607-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T13:45:28.3381196-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T13:45:28.6485220-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T13:45:28.6495838-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T13:45:28.6605020-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12736:e4e9d49d successfully announced in 287.7051 ms -2020-04-05T13:45:28.6615229-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12736:0d1a3c29 successfully announced in 6.0803 ms -2020-04-05T13:45:28.6687331-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12736:0d1a3c29 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T13:45:28.6697101-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12736:e4e9d49d is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T13:45:28.8078956-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12736:0d1a3c29 all the dispatchers started -2020-04-05T13:45:28.8169220-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12736:e4e9d49d all the dispatchers started -2020-04-05T13:45:29.8935551-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T13:45:29.8955304-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T13:45:29.8974193-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T13:46:51.4321020-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T13:46:51.4372964-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T13:46:51.6383571-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T13:46:51.6395229-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T13:46:51.6796943-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20128:1bb081e5 successfully announced in 31.1286 ms -2020-04-05T13:46:51.6808646-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20128:7b5d084a successfully announced in 212.183 ms -2020-04-05T13:46:51.6961942-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20128:1bb081e5 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T13:46:51.7004735-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20128:7b5d084a is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T13:46:51.8758727-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20128:1bb081e5 all the dispatchers started -2020-04-05T13:46:51.8778524-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:20128:7b5d084a all the dispatchers started -2020-04-05T13:46:52.8655711-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T13:46:52.8740737-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T13:46:52.8764471-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T13:49:02.8075971-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T13:49:02.8117256-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T13:49:02.9244165-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T13:49:02.9244510-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T13:49:02.9486004-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22912:8f2632ad successfully announced in 124.3205 ms -2020-04-05T13:49:02.9486004-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22912:a758e9fc successfully announced in 22.5422 ms -2020-04-05T13:49:02.9516480-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22912:a758e9fc is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T13:49:02.9516481-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22912:8f2632ad is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T13:49:02.9577847-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22912:a758e9fc all the dispatchers started -2020-04-05T13:49:02.9578387-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:22912:8f2632ad all the dispatchers started -2020-04-05T13:49:04.2414369-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T13:49:04.2489867-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T13:49:04.2509606-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:10:42.5154921-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18230571293206380816", Request ID "80000111-0000-fd00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:11:01.8847368-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18230571293206380818", Request ID "80000113-0000-fd00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:11:18.9235042-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18158513733528191424", Request ID "800001c1-0008-fc00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:11:56.7499606-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:11:56.7544722-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:11:56.9041708-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:11:56.9054377-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:11:56.9491285-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12032:56df2ad2 successfully announced in 176.3042 ms -2020-04-05T14:11:56.9503891-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12032:2b2aa6a2 successfully announced in 38.3411 ms -2020-04-05T14:11:56.9620426-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12032:2b2aa6a2 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:11:56.9630933-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12032:56df2ad2 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:11:57.0774907-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12032:56df2ad2 all the dispatchers started -2020-04-05T14:11:57.0850830-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:12032:2b2aa6a2 all the dispatchers started -2020-04-05T14:11:57.8633375-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:11:57.8702473-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:11:57.8719618-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:11:57.9937313-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18374686494167139407", Request ID "80000450-0003-ff00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:13:48.4444651-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18230571323271151879", Request ID "80000108-0007-fd00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:14:33.0245393-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:14:33.0291643-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:14:33.1823149-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:14:33.1835542-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:14:33.2237994-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10192:29c7381c successfully announced in 176.0118 ms -2020-04-05T14:14:33.2248671-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10192:3043a89a successfully announced in 33.654 ms -2020-04-05T14:14:33.2366363-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10192:3043a89a is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:14:33.2377551-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10192:29c7381c is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:14:33.3611710-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10192:3043a89a all the dispatchers started -2020-04-05T14:14:33.3692201-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:10192:29c7381c all the dispatchers started -2020-04-05T14:14:34.1738976-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:14:34.1758602-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:14:34.1830956-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:14:34.2962618-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18302628891539276758", Request ID "800003d7-0001-fe00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:14:50.3467710-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18086456165260067175", Request ID "80000168-000e-fb00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:15:00.1335622-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:15:00.1383319-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:15:00.2952046-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:15:00.2962542-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:15:00.3398457-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25096:bcce27fe successfully announced in 36.3169 ms -2020-04-05T14:15:00.3408193-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25096:da77809c successfully announced in 178.846 ms -2020-04-05T14:15:00.3515002-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25096:da77809c is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:15:00.3525549-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25096:bcce27fe is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:15:00.4702974-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25096:da77809c all the dispatchers started -2020-04-05T14:15:00.4717584-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:25096:bcce27fe all the dispatchers started -2020-04-05T14:15:01.2526071-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:15:01.2596217-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:15:01.2614298-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:15:01.3740737-06:00 FAIL [Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer] [ApplicationError] Connection ID "18158513733528191426", Request ID "800001c3-0008-fc00-b63f-84710c7967bb": An unhandled exception was thrown by the application.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync() - -2020-04-05T14:15:25.5504347-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:15:25.5548395-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:15:25.7294398-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:15:25.7307341-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:15:25.7379358-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:2108:0293bd89 successfully announced in 163.0078 ms -2020-04-05T14:15:25.7390840-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:2108:bf282f24 successfully announced in 2.6504 ms -2020-04-05T14:15:25.7474449-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:2108:0293bd89 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:15:25.7486758-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:2108:bf282f24 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:15:25.8723418-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:2108:bf282f24 all the dispatchers started -2020-04-05T14:15:25.8897109-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:2108:0293bd89 all the dispatchers started -2020-04-05T14:15:26.7778087-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:15:26.7850998-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:15:26.7868856-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:15:26.8919371-06:00 FAIL [Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware] [UnhandledException] An unhandled exception has occurred while executing the request.System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request. - - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__1(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.b__2() - at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.b__0(HttpContext context, Func`1 next) - at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.b__1(HttpContext context) - at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) - at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) - at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) - -2020-04-05T14:15:55.1356301-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:15:55.1404886-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:15:55.3048285-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:15:55.3058840-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:15:55.3486321-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9540:0475dcc2 successfully announced in 185.5134 ms -2020-04-05T14:15:55.3496885-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9540:b64dfe1f successfully announced in 38.3769 ms -2020-04-05T14:15:55.3607127-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9540:b64dfe1f is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:15:55.3619100-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9540:0475dcc2 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:15:55.4962395-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9540:0475dcc2 all the dispatchers started -2020-04-05T14:15:55.5042848-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:9540:b64dfe1f all the dispatchers started -2020-04-05T14:15:56.2950028-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:15:56.3019478-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:15:56.3036761-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:16:03.7001763-06:00 WARN [Microsoft.AspNetCore.Identity.UserManager] [14] User b31d575e-bc02-49d0-816e-6b84bf84e9ae password validation failed: PasswordTooShort;PasswordRequiresUniqueChars. -2020-04-05T14:17:18.3136182-06:00 WARN [Microsoft.AspNetCore.Identity.UserManager] [14] User 7fe2e7ee-ed95-4296-ab93-7da08a83aca4 password validation failed: PasswordTooShort;PasswordRequiresUniqueChars. -2020-04-05T14:17:31.1335278-06:00 WARN [Microsoft.AspNetCore.Identity.UserManager] [14] User 3fd3721a-291f-4ca3-9e38-4d92f12ec719 password validation failed: PasswordTooShort;PasswordRequiresUniqueChars. -2020-04-05T14:27:25.9596516-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:27:25.9640455-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:27:26.1181571-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:27:26.1192243-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:27:26.1658311-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:16652:4e8eb588 successfully announced in 183.1437 ms -2020-04-05T14:27:26.1668729-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:16652:b010bf2b successfully announced in 41.928 ms -2020-04-05T14:27:26.1776605-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:16652:b010bf2b is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:27:26.1787097-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:16652:4e8eb588 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:27:26.2947111-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:16652:4e8eb588 all the dispatchers started -2020-04-05T14:27:26.2999844-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:16652:b010bf2b all the dispatchers started -2020-04-05T14:27:27.0890075-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:27:27.0966552-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:27:27.0985544-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:27:27.5493007-06:00 WARN [Microsoft.AspNetCore.Identity.UserManager] [13] User 72a2755a-26ac-4bf6-8d9c-ed9c7a87aa41 validation failed: InvalidEmail. -2020-04-05T14:28:52.5373815-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:28:52.5436157-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:28:52.7374914-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:28:52.7388085-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:28:52.7995890-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18588:f35627db successfully announced in 232.1254 ms -2020-04-05T14:28:52.8006659-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18588:3bb85702 successfully announced in 51.8775 ms -2020-04-05T14:28:52.8173288-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18588:f35627db is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:28:52.8184988-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18588:3bb85702 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:28:52.9354290-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18588:3bb85702 all the dispatchers started -2020-04-05T14:28:52.9431142-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:18588:f35627db all the dispatchers started -2020-04-05T14:28:53.7409456-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:28:53.7492840-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:28:53.7513626-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web -2020-04-05T14:29:10.7957756-06:00 WARN [Hangfire.AutomaticRetryAttribute] [0] Failed to process the job 'f3f6c4dc-a989-441e-9172-baddaa290035': an exception occurred. Retry attempt 1 of 10 will be performed in 00:00:44.System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. - ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream. - at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) - at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest) ---- End of stack trace from previous location where exception was thrown --- - at System.Net.Security.SslStream.ThrowIfExceptional() - at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) - at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result) - at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) - at System.Net.Security.SslStream.<>c.b__65_1(IAsyncResult iar) - at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) ---- End of stack trace from previous location where exception was thrown --- - at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) - --- End of inner exception stack trace --- - at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) - at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken) - at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) - at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) - at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) - at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) - at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) - at RDNET.RdNetClient.Get[T](String url, Boolean repeatRequest) in C:\Projects\RD.NET\RDNET\RDNET\RdNetClient.cs:line 529 - at RDNET.RdNetClient.TorrentsAsync(Nullable`1 offset, Nullable`1 limit, String filter) in C:\Projects\RD.NET\RDNET\RDNET\RdNetClient.cs:line 438 - at RdtClient.Service.Services.Torrents.Update() in C:\Projects\rdt-client\server\RdtClient.Service\Services\Torrents.cs:line 117 - at RdtClient.Service.Services.Scheduler.Process() in C:\Projects\rdt-client\server\RdtClient.Service\Services\Scheduler.cs:line 36 - at System.Runtime.CompilerServices.TaskAwaiter.GetResult() - -2020-04-05T14:37:08.0803796-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:37:08.0854115-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:37:08.2629890-06:00 INFO [Hangfire.BackgroundJobServer] [0] Starting Hangfire Server using job storage: 'Hangfire.MemoryStorage.MemoryStorage' -2020-04-05T14:37:08.2640604-06:00 INFO [Hangfire.BackgroundJobServer] [0] Using the following options for Hangfire Server: - Worker count: 20 - Listening queues: 'default' - Shutdown timeout: 00:00:15 - Schedule polling interval: 00:00:15 -2020-04-05T14:37:08.3090213-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:15040:fe3eb9ba successfully announced in 193.9269 ms -2020-04-05T14:37:08.3102131-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:15040:77dba8c6 successfully announced in 35.0663 ms -2020-04-05T14:37:08.3217200-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:15040:77dba8c6 is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:37:08.3227734-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:15040:fe3eb9ba is starting the registered dispatchers: ServerWatchdog, ServerJobCancellationWatcher, ExpirationManager, CountersAggregator, Worker, DelayedJobScheduler, RecurringJobScheduler... -2020-04-05T14:37:08.4576865-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:15040:77dba8c6 all the dispatchers started -2020-04-05T14:37:08.4685132-06:00 INFO [Hangfire.Server.BackgroundServerProcess] [0] Server roger-pc:15040:fe3eb9ba all the dispatchers started -2020-04-05T14:37:09.3505349-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Application started. Press Ctrl+C to shut down. -2020-04-05T14:37:09.3570494-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Hosting environment: Development -2020-04-05T14:37:09.3591078-06:00 INFO [Microsoft.Hosting.Lifetime] [0] Content root path: C:\Projects\rdt-client\server\RdtClient.Web diff --git a/server/RdtClient.Web/wwwroot/index.html b/server/RdtClient.Web/wwwroot/index.html new file mode 100644 index 0000000..6d5e026 --- /dev/null +++ b/server/RdtClient.Web/wwwroot/index.html @@ -0,0 +1 @@ +Test \ No newline at end of file