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

我做错了什么?

最佳答案

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%“空”项目中的默认命令,因此您可能需要添加kestrel命令)。

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

如果是从Windows上的命令提示符启动它,则可以使用:
dnx . web

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

关于c# - 运行ASP.NET 5跨平台,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30036504/

10-09 18:27
查看更多