运行ASP.NET 5跨平台

Som*_*ser 5 c# asp.net macos

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

然后,我在Mac OS机器上克隆了存储库.我成功跑去dnu restore拿包裹.然后我跑了dnx . run.当我这样做时,我收到了一个错误.错误是:

'Website' does not contain a static 'Main' method suitable for an entry point
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我有一个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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

mas*_*son 3

在您的project.json文件中,应该有一组用于运行项目的命令。默认情况下,其中之一是web,另一个是kestrel。Kestrel 是 OS X 和 Linux 的服务器,它基于为Nodelibuv提供支持的同一个库。

"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"
},
Run Code Online (Sandbox Code Playgroud)

(目前我面前没有 VS 2015,所以我不能 100% 确定“空”项目中的默认命令,因此您可能需要添加 kestrel 命令)。

因此,运行以下命令在 OS X 或 Linux 上启动服务器:

dnx . kestrel
Run Code Online (Sandbox Code Playgroud)

如果您从 Windows 上的命令提示符启动它,您可以使用:

dnx . web
Run Code Online (Sandbox Code Playgroud)

请注意,您可以根据需要自定义命令。例如,一个命令可能会生成数据库。另一种可能会分析服务器的系统要求。人们甚至可能会卸载该应用程序!