Здесь AppContext.BaseDirectory всегда возвращает C: \ Windows \ System32, но мы ожидаем D: \ MyCustomService - где у нас есть фактические файлы.
Пожалуйста, найдите мой следующий код. Можете ли вы предложить, где это идет не так, а также я попробовал все другие варианты, такие как CurrentDirectory, System.Reflection.Assembly.GetEntryAssembly (). Location, Process.GetCurrentProcess (). MainModule.FileName; et c
Мы установили сервер с помощью следующей команды
s c create "myServiceName" binPath = "D: \ MyCustomService \ myServiceName.exe"
public class Program
{
public static void Main(string[] args)
{
const string loggerTemplate = @"{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u4}]<{ThreadId}> [{SourceContext:l}] {Message:lj}{NewLine}{Exception}";
var baseDir = AppContext.BaseDirectory;
Console.WriteLine(baseDir);
var logfile = Path.Combine(baseDir, "App_Data", "logs", "log.txt");
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.With(new ThreadIdEnricher())
.Enrich.FromLogContext()
.WriteTo.Console(LogEventLevel.Information, loggerTemplate, theme: AnsiConsoleTheme.Literate)
.WriteTo.File(logfile, LogEventLevel.Information, loggerTemplate, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 90)
.CreateLogger();
try
{
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Application terminated unexpectedly");
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
})
.UseWindowsService();
}