我有一个完整的ASP.NET MVC应用程序(.NET Core,ASP.NET MVC 6),它在Visual Studio(使用IISExpress)中运行良好。
我现在想要一个控制台应用程序,它接受MVC应用程序并托管它(自托管)。
答案 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应用程序:
IIS
自主机
但是,自托管Web应用程序无法在系统启动和重启时自动重启,或者在发生故障时自动重启。
答案 2 :(得分:2)
是强>
ASP.NET 5与托管应用程序的Web服务器环境完全分离。 ASP.NET 5支持在IIS和IIS Express中托管,以及使用Kestrel和WebListener HTTP服务器的自托管方案。此外,开发人员和第三方软件供应商可以创建自定义服务器来托管他们的ASP.NET 5应用程序。