2015-05-04 16 views
5

Sono interessato a ASP.NET 5 sui computer Windows e Mac OS. Per iniziare, ho installato Visual Studio 2015 RC sulla mia macchina Windows. Ho creato un nuovo sito Web vuoto per ASP.NET 5 (noto anche come vNext). Ho aggiornato il modello con una directory Views e incluso i pacchetti nuget MVC e Static Files. Posso eseguire correttamente questa app "Hello World". Ho anche avuto successo nel controllarlo in GitHub e distribuirlo automaticamente in Azure come sito web.Esecuzione di ASP.NET 5 multipiattaforma

Quindi, ho clonato il repository sul mio computer Mac OS. Ho eseguito con successo dnu restore per ottenere i pacchetti. Ho quindi eseguito dnx . run. Quando faccio questo, ottengo comunque un errore. L'errore è:

'Website' does not contain a static 'Main' method suitable for an entry point 

Cosa sto facendo male? Ho un file Startup.cs. So che funziona in base al fatto che viene eseguito su Windows e in Azure. Tuttavia, non riesco a capire cosa mi manca. Il mio file Startup.cs si presenta così:

Startup.cs

using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.Framework.ConfigurationModel; 
using Microsoft.Framework.DependencyInjection; 

namespace Test.Site.Web 
{ 
    public class Startup 
    { 
     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddMvc(); 
     } 

     public void Configure(IApplicationBuilder app) 
     { 
      app.UseErrorPage(); 
      app.UseStaticFiles(); 

      app.UseMvc(routes => 
      { 
       routes.MapRoute("default", 
        "{controller}/{action}/{id}", 
        defaults: new { controller = "Home", action = "Index" }); 
      }); 

      app.UseMvc(); 
      app.UseWelcomePage(); 
     } 
    } 
} 

Che cosa ho fatto di sbagliato?

risposta

3

Nel file project.json, dovrebbe esserci un insieme di comandi per eseguire il progetto. Per impostazione predefinita, uno di questi è web e uno è kestrel. Kestrel è il server per OS X e Linux, è basato su libuv, la stessa libreria che alimenta Node.

"commands": { 
    "gen": "Microsoft.Framework.CodeGeneration", 
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004", 
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5002" 
}, 

(non ho VS 2015 di fronte a me in questo momento, quindi non sono sicuro al 100% dei comandi predefiniti in un progetto di "vuoto", quindi potrebbe essere necessario aggiungere il gheppio comando).

Quindi eseguire questo comando per avviare il server su OS X o Linux:

dnx . kestrel 

Se stavate iniziando dal prompt dei comandi in Windows, utilizza:

dnx . web 

Nota puoi personalizzare i comandi come preferisci. Ad esempio, un comando potrebbe generare il database. Un altro potrebbe analizzare il server per i requisiti di sistema. Si potrebbe anche disinstallare l'applicazione!

+0

Grazie mille. Mi chiedevo perché c'erano due voci in alcuni degli esempi che ho visto. Apprezzo la tua risposta approfondita. –

+0

@ZachTempleton Quindi il modello di sito Web vuoto aveva il comando 'kestrel' lì per impostazione predefinita? Fammi sapere così posso aggiornare la mia risposta per favore. – mason

+0

sì era lì per impostazione predefinita –