2015-05-04 62 views
5

我对我的Windows和Mac OS机器上的ASP.NET 5感兴趣。要开始,我在Windows机器上安装了Visual Studio 2015 RC。我为ASP.NET 5(又名vNext)创建了一个新的空白网站。我用Views目录更新了模板,并包含了MVC和Static Files nuget包。我可以成功运行这个“Hello World”应用程序。我也成功地将它检入GitHub并自动将其作为网站部署到Azure。运行ASP.NET 5跨平台

然后,我克隆了我的Mac OS机器上的存储库。我成功运行dnu restore以获取软件包。然后我跑了dnx . run。当我这样做时,我得到一个错误。错误是:

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

我在做什么错?我有一个Startup.cs文件。我知道它是基于它在Windows和Azure上运行的事实而工作的。然而,我无法弄清楚我错过了什么。我Startup.cs文件看起来像这样:

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(); 
     } 
    } 
} 

我做了什么错?

回答

3

在您的project.json文件中,应该有一组命令来运行该项目。默认情况下,其中一个是web,另一个是kestrel。 Kestrel是OS X和Linux的服务器,它基于libuv,与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" 
}, 

(我没有VS 2015,此刻我的面前,所以我不是100%肯定的默认命令的“空”的项目,所以你可能需要添加红隼命令)。

那么运行这个命令来启动服务器上的OS X或Linux:

dnx . kestrel 

如果你是从Windows命令提示符启动它,你会使用:

dnx . web 

注你可以自定义这些命令,只要你喜欢。例如,一个命令可能会生成数据库。另一个可能会分析服务器的系统要求。人们甚至可能会卸载应用程序!

+0

非常感谢你。我想知道为什么在我看到的一些例子中有两个条目。我感谢你的彻底回应。 –

+0

@ZachTempleton因此,默认情况下,空网站模板中有'kestrel'命令?让我知道,所以我可以更新我的答案。 – mason

+0

是的,它是默认的 –