我对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/