2015-05-18 5 views
24

Ich habe eine voll funktionsfähige ASP.NET MVC-Anwendung (.NET Core, ASP.NET MVC 6), die in Visual Studio (die IISExpress verwendet) einwandfrei funktioniert.Ist es möglich, eine ASP.NET Core-Anwendung ohne IIS (nicht Web API) selbst zu hosten?

Ich möchte jetzt eine Konsolenanwendung haben, die die MVC-Anwendung übernimmt und sie hostet (Self-Hosting).

+3

Siehe die Anweisungen am Ende dieses Artikels: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6 Die gleichen Schritte gelten zu mvc und Web-API, da sie die gleiche Art von Projekt in asp.net 5 – rdans

+0

sind, wenn ich Web-Listener zu Host-Anwendung verwenden, bekam ich die folgende Ausnahme. System.MissingMethodException: Methode nicht gefunden: 'Int32 System.Runtime.InteropSe rvices.Marshal.SizeOf (!! 0)'. bei Microsoft.Net.Http.Server.WebListener.SetRequestQueueLimit() bei Microsoft.Net.Http.Server.WebListener.Start() bei Microsoft.AspNet.Server.WebListener.MessagePump.Start (Func'2 app) bei Microsoft.AspNet.Server.WebListener.ServerFactory.Start (IServerInformation Server, Func'2 App) bei Microsoft.AspNet.Hosting.HostingEngine.Start (HostingContext Kontext) – selva

+0

Willkommen bei Stack Overflow, @selva! Dies ist ein inhärentes Merkmal des Builds [tag: asp.net-5], wie @rdans sagte. Wenn Sie ein bestimmtes Problem mit dem Funktionieren des verknüpften Lernprogramms haben, stellen Sie diese Frage stattdessen. –

Antwort

21

Ist es möglich, eine MVC 6-Anwendung ohne IIS (nicht Web API) selbst zu hosten?

Ja. Tatsächlich sind alle ASP.NET Core-Anwendungen selbst gehostet. Sogar in der Produktion sind IIS (oder Nginx) ein Reverse-Proxy für die selbst gehostete Anwendung.

Hier ist, wie Sie es versuchen können.

Erste, herunterladen und installieren .NET-Core von hier https://www.microsoft.com/net/core

Second, erstellen Sie ein MVC 6 Projekt. Klonen Sie beispielsweise ein Beispiel aus dem ASP.NET GitHub-Repository.

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

Oder 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 

Dritte, wiederherstellen und das Projekt.

dotnet restore 
dotnet run 

Schließlich, navigieren Sie zu localhost: 5000 in Ihrem Web-Browser. Die MVC 6-Anwendung ist selbst gehostet.

Schauen Sie bei der resultierenden Program.cs-Klasse, können Sie das Self-Hosting sehen. Die IISIntegration ist optional - es ist nur notwendig, wenn Sie mit IIS integrieren möchten.

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

Vielen Dank, meine Frage zu beantworten. aber ich habe Framework-Ausnahme, wenn Sie DNX ausführen. Webbefehl.J: \ mvc6 \ testdemo> dnx. Web System.InvalidOperationException: Fehler die folgenden Abhängigkeiten f oder Zielrahmen 'DNX, Version = V4.5.1' lösen: Kestrel 1.0.0-Beta 4 KRE-CLR-x86 1.0.0-beta2 Microsoft.AspNet. Diagnose 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

Ich bin überrascht, dass es versucht, 'Kestrel' aufzulösen und die anderen Abhängigkeiten nicht auflösen kann. Re: 'Kestrel', es ist für einen Mac und ich glaube nicht, dass es in der' project.json' Datei aufgeführt ist. Ich bin überrascht, dass "dnx" sogar danach sucht. Re: die anderen Abhängigkeiten, haben Sie 'dnu restore' ausgeführt, um sie von Nuget zu entfernen? Das müssen wir tun, bevor wir 'dnx' starten. –

+0

DNU Wiederherstellung funktioniert gut in meinem System. aber wenn ich die Anwendung auf einem anderen Rechner hosten musste, war ich mit der Ausnahme konfrontiert. – selva

2

JA

ASP.NET 5 vollständig von der Web-Server-Umgebung entkoppelt, der die Anwendung hostet. ASP.NET 5 unterstützt das Hosting in IIS und IIS Express sowie Self-Hosting-Szenarien mit den HTTP-Servern Kestrel und WebListener. Darüber hinaus können Entwickler und Softwareanbieter von Drittanbietern benutzerdefinierte Server zum Hosten ihrer ASP.NET 5-Apps erstellen.

weitere Informationen: ASP.NET documentation - Servers

3

Ja, ASP.NET-Core unterstützt die Open Web-Schnittstelle für .NET (OWIN), Ihre haben zwei Möglichkeiten, Ihre Asp zu hosten.Netto-Kern Web-Anwendung:

  1. IIS

  2. Self-Host-

Aber selbst Hosting Web-Anwendung nicht automatisch beim Systemstart neu starten kann und neu starten oder in der Ereignis eines Fehlers.

+1

wichtiger Punkt über den automatischen Neustart nicht. –

Verwandte Themen