如何在线运行dotnet应用程序?

时间:2018-05-17 21:05:39

标签: asp.net .net .net-core

我使用NetCore 2.0开发了一个控制台应用程序,如果我执行:dotnet name.dll,这在我的linux发行版上运行得非常好但是我找不到任何解释如何运行这个控制台app的教程线上。

我正在寻找一种允许我24小时运行软件的解决方案,因为我的应用程序需要将数据存储到mysql数据库中。

我看到不同的网站提供了ASP.NET廉价托管,但我不知道应该购买哪种服务来实现类似的东西,有人可以帮助我吗?

感谢。

1 个答案:

答案 0 :(得分:1)

要部署应用程序,您需要运行它,并通过设置反向代理将HTTP流量重定向到Kestrel Web服务器。

Windows和IIS

首先,通过将此配置添加到您的Program类(应该已经存在),确保您的应用程序正在使用Kestrel Web服务器运行:

<强> Program.cs的

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
    }
}

以上配置将为您设置反向代理和自动运行Kestrel服务器

有关详情,请查看Host ASP.NET Core on Windows with IISASP.NET Core Web Host

Linux和Nginx或Apache

您需要手动配置反向代理,以将流量重定向到正在运行的Kestrel服务器。如果您想自动启动服务器,则需要配置服务:

如果您使用的是CentOS(或任何基于RedHat的发行版),以下是一些说明:

创建服务配置文件:

sudo nano /etc/systemd/system/kestrel-name.service

使用以下内容编辑文件:

[Unit]
Description=My awesome .NET Core Website

[Service]
WorkingDirectory=/var/aspnetcore/your_website
ExecStart=/usr/local/bin/dotnet /var/aspnetcore/your_website/name.dll
Restart=always
# Restart service after 10 seconds if dotnet service crashes
RestartSec=10
SyslogIdentifier=dotnet-example
# Change this to match the user running your Web server
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install]
WantedBy=multi-user.target

保存并关闭文件,运行以下命令安装并启动服务:

systemctl enable kestrel-name.service
systemctl start kestrel-name.service

如果您使用的是基于debian的发行版,例如ubuntu:

在/ etc / init /

中为您的服务创建配置文件
sudo nano /etc/init/kestrel-name.conf

将以下内容添加到配置文件中:

# My awesome .NET Core Website service configuration
start on filesystem
exec /usr/local/bin/dotnet /var/aspnetcore/your_website/name.dll

保存文件并运行以下命令以安装和启动服务:

sudo ln -s /etc/init/kestrel-name.conf /etc/init.d/my_website_name

sudo service my_website_name start

以下链接说明了如何配置反向代理:

Host ASP.NET Core on Linux with Nginx

Host ASP.NET Core on Linux with Apache