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

时间:2015-05-18 08:32:59

标签: asp.net-core visual-studio-2015 asp.net-core-mvc

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

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

3 个答案:

答案 0 :(得分:26)

  

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

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

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

首先,从此处https://www.microsoft.com/net/core

下载并安装.NET Core

第二次,创建一个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

第三次,恢复并运行项目。

dotnet restore
dotnet run 

最后,在您的网络浏览器中导航至localhost:5000。 MVC 6应用程序是自托管的。

在生成的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();
    }
}

答案 1 :(得分:5)

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

  1. IIS

  2. 自主机

  3.   

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

答案 2 :(得分:2)

  

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

更多信息:ASP.NET documentation - Servers