我对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)
我做错了什么?
在您的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)
请注意,您可以根据需要自定义命令。例如,一个命令可能会生成数据库。另一种可能会分析服务器的系统要求。人们甚至可能会卸载该应用程序!
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |