首页 文章

是否可以在没有IIS(而不是Web API)的情况下自托管ASP.NET核心应用程序?

提问于
浏览
27

我有一个完整的ASP.NET MVC应用程序(.NET Core,ASP.NET MVC 6),它在Visual Studio(使用IISExpress)中运行良好 .

我现在想要一个控制台应用程序,它接受MVC应用程序并托管它(自托管) .

3 回答

  • 23

    YES

    ASP.NET 5与托管应用程序的Web服务器环境完全分离 . ASP.NET 5支持在IIS和IIS Express中托管,以及使用Kestrel和WebListener HTTP服务器的自托管方案 . 此外,开发人员和第三方软件供应商可以创建自定义服务器来托管其ASP.NET 5应用程序 .

    更多信息:ASP.NET documentation - Servers

  • 2

    是的,ASP.NET Core支持.NET的开放Web界面(OWIN),您有两个选项来托管您的Asp.net核心Web应用程序:

    • IIS

    • 自我主持人

    但是,自托管Web应用程序无法在系统引导和重新启动时自动重新启动,或者在发生故障时无法重新启动 .

  • 4

    是否可以在没有IIS(非Web API)的情况下自行托管MVC 6应用程序?

    Yes. 事实上,所有ASP.NET核心应用程序都是自托管的 . 即使在 生产环境 中,IIS(或Nginx)也是自托管应用程序的反向代理 .

    以下是您可以尝试的方法 .

    First ,从这里下载并安装.NET Core https://www.microsoft.com/net/core

    Second ,创建一个MVC 6项目 . 例如,从ASP.NET GitHub存储库克隆样本 .

    git clone git@github.com:aspnet/cli-samples.git
    cd cli-samples\HelloMvc
    

    use Yeoman to generate an ASP.NET MVC 6 site .

    npm install -g yo
    npm install -g bower
    npm install -g generator-aspnet
    
    yo aspnet webbasic MyMvc6App
    cd MyMvc6App
    

    Third ,恢复并运行项目 .

    dotnet restore
    dotnet run
    

    Finally ,在Web浏览器中导航到localhost:5000 . MVC 6应用程序是自托管的 .

    Look 在生成的Program.cs类中,您可以看到自托管 . IISIntegration 是可选的 - 只有在您想要与IIS集成时才需要它 .

    public class Program
    {
        public static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                .AddCommandLine(args)
                .AddEnvironmentVariables(prefix: "ASPNETCORE_")
                .Build();
    
            var host = new WebHostBuilder()
                .UseConfiguration(config)
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();
    
            host.Run();
        }
    }
    

相关问题