运行跨平台的ASP.NET 5

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作为一个网站。
然后,我在我的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();
        }
    }
}

我做错了什么?
1个回答

3
在您的 project.json 文件中,应该有一组用于运行项目的命令。默认情况下,其中一个是 web,另一个是 kestrel。Kestrel 是适用于 OS X 和 Linux 的服务器,它基于libuv库,这是支持Node的同一库。请注意,不要删除任何 HTML 标记。
"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"
},

我现在手头没有VS2015,所以对于“空”的项目默认命令不是100%确定,所以您可能需要添加kestrel命令。
因此,请在OS X或Linux上运行此命令来启动服务器:
dnx . kestrel

如果您在Windows命令提示符中启动它,您需要使用以下命令:
dnx . web

注意,您可以根据自己的喜好自定义命令。例如,一个命令可能会生成数据库。另一个命令则可能分析服务器系统要求。甚至还有一个命令可以卸载应用程序!

非常感谢您。我一直在想为什么有些示例中会有两个条目。我非常感谢您详尽的回复。 - Some User
@ZachTempleton,所以空的网站模板默认情况下有kestrel命令吗?请告诉我,这样我就可以更新我的答案了。 - mason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接