2015-05-04 22 views
5

Tôi quan tâm đến ASP.NET 5 trên máy tính Windows và Mac OS của mình. Để bắt đầu, tôi đã cài đặt Visual Studio 2015 RC trên máy tính Windows của mình. Tôi đã tạo một trang web mới, trống cho ASP.NET 5 (aka vNext). Tôi đã cập nhật mẫu với thư mục Views và bao gồm các gói nuget MVC và Static Files. Tôi có thể chạy thành công ứng dụng "Hello World" này. Tôi cũng đã thành công trong việc kiểm tra nó vào GitHub và tự động triển khai nó lên Azure dưới dạng một Website.Chạy ASP.NET 5 Cross-Platform

Sau đó, tôi nhân bản kho lưu trữ trên máy Mac OS của mình. Tôi đã chạy thành công dnu restore để nhận các gói. Sau đó tôi chạy dnx . run. Khi tôi làm điều này, tôi nhận được một lỗi mặc dù. Lỗi này là:

'Website' does not contain a static 'Main' method suitable for an entry point 

Tôi đang làm gì sai? Tôi có một tập tin Startup.cs. Tôi biết nó hoạt động dựa trên thực tế là nó chạy trên Windows và trong Azure. Tuy nhiên, tôi không thể tìm ra những gì tôi đang thiếu. tập tin Startup.cs của tôi trông như thế này:

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

Tôi đã làm gì sai?

Trả lời

3

Trong tệp project.json của bạn, cần có một bộ lệnh để chạy dự án. Theo mặc định, một trong số đó là web và một là kestrel. Kestrel là máy chủ cho OS X và Linux, dựa trên libuv, cùng một thư viện có quyền hạn 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" 
}, 

(Tôi không có VS 2015 trước mặt tôi vào lúc này, vì vậy tôi không chắc chắn 100% các lệnh mặc định trong dự án "trống", vì vậy bạn có thể cần phải thêm kestrel chỉ huy).

Vì vậy, chạy lệnh này để khởi động máy chủ của bạn trên OS X hoặc Linux:

dnx . kestrel 

Nếu bạn đã bắt đầu nó từ cửa sổ lệnh trên Windows, bạn muốn sử dụng:

dnx . web 

Note bạn có thể tùy chỉnh các lệnh tuy nhiên bạn thích. Ví dụ, một lệnh có thể tạo ra cơ sở dữ liệu. Khác có thể phân tích máy chủ cho các yêu cầu hệ thống. Một thậm chí có thể gỡ cài đặt ứng dụng!

+0

Cảm ơn bạn rất nhiều. Tôi đã tự hỏi tại sao có hai mục trong một số ví dụ mà tôi đã thấy. Tôi đánh giá cao phản hồi toàn diện của bạn. –

+0

@ZachTempleton Vì vậy, mẫu trang web trống có lệnh 'kestrel' trong đó theo mặc định? Hãy cho tôi biết để tôi có thể cập nhật câu trả lời của tôi. – mason

+0

có nó đã có theo mặc định –