相关疑难解决方法(0)

即使在.net核心控制台应用程序中使用Console.ReadLine(),docker容器也会立即退出

我试图在docker容器中运行.net核心1.0.0控制台应用程序.
当我dotnet run从我的机器上的Demo文件夹中运行命令时,它工作正常; 但是当使用时docker run -d --name demo Demo,容器会立即退出.

我试图docker logs demo检查日志,它只显示Console.WriteLine中的文本:

演示应用运行...

没有别的.

我已经在https://github.com/learningdockerandnetcore/Demo上传了该项目

该项目包含Programs.cs,Dockerfile用于创建Demo图像和project.json文件.

c# docker .net-core dockerfile asp.net-core

17
推荐指数
4
解决办法
1万
查看次数

如何托管GRPC服务?

我使用Link提供的示例在C#中创建了一个GRPC服务器.现在我想弄清楚我应该如何托管这个服务器,以便我实现以下目标:

  • 我应该将此服务器设置为控制台应用程序还是Windows服务.如果我把它变成一个Windows服务,那么更新服务将是麻烦的(这是一个很大的负面),如果我把它变成一个控制台应用程序,那么更新将只需要关闭exe.但这与错误关闭相同的价格有关.还有其他更好的方法吗?
  • 使用IIS时,这个问题不会出现,因为我可以简单地从LB中删除该站点并停止网站执行更新,但由于GRPC不会成为IIS的一部分,我不确定是什么方法可以实现这一点.

欢迎任何有关更好架构的参考资料.

c# grpc

10
推荐指数
2
解决办法
6546
查看次数

使用通用主机 IHostBuilder 时检测来自 docker 的关闭信号

我有一个默认的通用主机构建器,如下所示:

public static IHostBuilder CreateDefaultBuilder(string[] args)
{
    var builder = Host.CreateDefaultBuilder(args);

    builder
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.ClearProviders();
            logging.AddConsole();
            if (hostingContext.HostingEnvironment.IsDevelopment() == true)
                logging.AddDebug();
        })
        .ConfigureHostConfiguration(configurationBuilder =>
        {
            configurationBuilder.AddCommandLine(args);
        })
        .ConfigureAppConfiguration((hostingContext, configApp) =>
        {
            var env = hostingContext.HostingEnvironment;
            Console.WriteLine(env.EnvironmentName);
        })
        .UseConsoleLifetime();

    return builder;
}

public static async Task Main(string[] args)
{
     var host = CreateDefaultBuilder(args)
                        .ConfigureServices((hostContext, services) =>
                        {
                            services.Configure<HostOptions>(option =>
                            {
                                option.ShutdownTimeout = System.TimeSpan.FromSeconds(20);
                            });

                            services.AddLogging();

                            services.AddSimpleInjector(container, options =>
                            {
                                // Hooks hosted services into the Generic Host pipeline while …
Run Code Online (Sandbox Code Playgroud)

c# docker .net-core

7
推荐指数
1
解决办法
337
查看次数

标签 统计

c# ×3

.net-core ×2

docker ×2

asp.net-core ×1

dockerfile ×1

grpc ×1