2015-05-18 4 views
24

Ho un'applicazione ASP.NET MVC completamente funzionante (.NET Core, ASP.NET MVC 6) che funziona perfettamente in Visual Studio (che utilizza IISExpress).È possibile ospitare autonomamente un'applicazione principale ASP.NET senza IIS (non API Web)?

Vorrei ora avere un'applicazione console che prende l'applicazione MVC e la ospita (self hosting).

+3

Vedere le istruzioni alla fine di questo articolo: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6 Si applicano le stesse fasi per mvc e web api poiché sono lo stesso tipo di progetto in asp.net 5 – rdans

+0

quando utilizzo il listener Web per l'applicazione host, ho ottenuto la seguente eccezione. System.MissingMethodException: Metodo non trovato: 'Int32 System.Runtime.InteropSe rvices.Marshal.SizeOf (!! 0)'. a Microsoft.Net.Http.Server.WebListener.SetRequestQueueLimit() a Microsoft.Net.Http.Server.WebListener.Start() a Microsoft.AspNet.Server.WebListener.MessagePump.Start (Func'2 app) su Microsoft.AspNet.Server.WebListener.ServerFactory.Start (server IServerInformation , app Func'2) in Microsoft.AspNet.Hosting.HostingEngine.Start (contesto HostingContext) – selva

+0

Benvenuti in Stack Overflow, @selva! Questa è una caratteristica intrinseca della build [tag: asp.net-5], come ha detto @rdans. Se hai un problema specifico con il funzionamento del tutorial collegato, ti preghiamo di porre questa domanda, invece. –

risposta

21

E 'possibile auto-ospitare un'applicazione MVC 6 senza IIS (non API Web)?

Sì. Infatti, tutte le applicazioni ASP.NET Core sono auto-ospitate. Anche in produzione, IIS (o Nginx) sono un proxy inverso per l'applicazione self-hosted.

Ecco come si può provare.

primo, scaricare e installare .NET core da qui https://www.microsoft.com/net/core

In secondo luogo, creare un progetto MVC 6. Ad esempio, clonare un campione dal repository GitHub di ASP.NET.

git clone [email protected]:aspnet/cli-samples.git 
cd cli-samples\HelloMvc 

oppure 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 

Terzo, ripristino ed eseguire il progetto.

dotnet restore 
dotnet run 

Infine, passare a localhost: 5000 nel browser web. L'applicazione MVC 6 è auto-ospitata.

Look nella classe Program.cs risultante, è possibile visualizzare l'auto-hosting. Il numero IISIntegration è facoltativo: è necessario solo se si desidera eseguire l'integrazione con 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(); 
    } 
} 
+0

Grazie mille per rispondere alla mia domanda. ma ho ottenuto un'eccezione di framework, quando eseguo dnx. web command.J: \ mvc6 \ testdemo> dnx. web System.InvalidOperationException: Impossibile risolvere le seguenti dipendenze F o target quadro 'DNX, Version = v4.5.1': Kestrel 1.0.0-beta4 KRE-CLR-x86 1.0.0-beta2 Microsoft.AspNet. Diagnostics 1.0.0-beta4 Microsoft.AspNet.Hosting 1.0.0-beta4 Microsoft.AspNet.Mvc 6.0.0-beta4 Microsoft.AspNet.Server.IIS 1.0.0-beta4 Microsoft.AspNet.Server.WebListener 1.0 .0-beta4 Microsoft.AspNet.StaticFiles 1.0.0-beta4 – selva

+0

Sono sorpreso che stia cercando di risolvere 'Kestrel' e non sia in grado di risolvere le altre dipendenze. Ri: 'Kestrel', è per un Mac e non penso sia elencato nel file' project.json'. Sono sorpreso che 'dnx' lo stia cercando. Ri: le altre dipendenze, hai eseguito 'dnu restore' per portarli giù da Nuget? Dobbiamo farlo prima di eseguire 'dnx'. –

+0

dnu ripristina il corretto funzionamento nel mio sistema. ma quando ospitava l'applicazione su un'altra macchina ho affrontato l'eccezione. – selva

2

SI

ASP.NET 5 è completamente disaccoppiato dall'ambiente web server che ospita l'applicazione. ASP.NET 5 supporta l'hosting in IIS e IIS Express e scenari self-hosting utilizzando i server HTTP Kestrel e WebListener. Inoltre, sviluppatori e fornitori di software di terze parti possono creare server personalizzati per ospitare le proprie app ASP.NET 5.

maggiori informazioni: ASP.NET documentation - Servers

3

Sì, ASP.NET core supporta l'interfaccia Open Web per NET (OWIN), il tuo hanno due opzioni per ospitare il vostro Asp.NET applicazione web di base:

  1. IIS

  2. Self-Host

Ma, applicazioni web self-hosting non può riavviarsi automaticamente all'avvio del sistema e riavviare o nel evento di un fallimento.

+1

punto importante su non riavviare automaticamente. –