2016-05-21 29 views
7

Tôi muốn thêm một ứng dụng .NET Core RC2 MVC mới vào một cụm Service Fabric hiện có, nhưng tôi không thể tìm ra cách tôi nên làm điều này..NET Core RC2 trong Service Fabric

Tôi đã xem xét một số ví dụ RC1 nhưng điều đó cũng không giúp tôi thêm chút nào. Tôi hiểu rằng bạn cần thêm EntryPoint trong tệp ServiceManifest.xml của mình. Nhưng trong RC1 dụ họ trỏ đến dnx.exe, đã được gỡ bỏ trong RC2:

<EntryPoint> 
    <ExeHost> 
     <Program>approot\runtimes\dnx-clr-win-x64.1.0.0-rc1-update1\bin\dnx.exe</Program> 
     <Arguments>--appbase approot\src\ChatWeb Microsoft.Dnx.ApplicationHost Microsoft.ServiceFabric.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener</Arguments> 
     <WorkingFolder>CodePackage</WorkingFolder> 
     <ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048" /> 
    </ExeHost> 
    </EntryPoint> 

gì EntryPoint tôi nên sử dụng trong phiên bản RC2 của NET Core?

Cảm ơn!

Trả lời

5

Kiểm tra thông báo này:

Announcing ASP.NET Core RC2

Như bạn thấy, ứng dụng ASP.NET cốt lõi của bạn với RC2 sẽ trở thành một ứng dụng console.

Điều đó nói rằng, điểm vào của bạn là EXE của bạn xuất phát từ việc biên dịch ứng dụng giao diện điều khiển ASP.NET Core của bạn. Vì vậy, thay vì dựa vào DNX để lấy phương thức Main từ Startup.cs của bạn, bạn thiết lập toolchain của bạn trong Program.cs và sau đó chỉ cần xây dựng một EXE mà Service Fabric sẽ sử dụng cho Entry.

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseStartup<Startup>() 
     .Build(); 
     host.Run(); 
    } 
} 

Vì vậy, biểu hiện của bạn sẽ là một cái gì đó như thế này:

<EntryPoint> 
    <ExeHost> 
     <Program>YourApp.Exe</Program> 
    </ExeHost> 
</EntryPoint> 
+0

Cảm ơn bạn đã phản hồi. Tôi tin điều này là đúng, nhưng việc xây dựng dự án không cung cấp cho tôi một tệp .exe. Chỉ cần một dll. Bạn có biết cách tôi có thể thiết lập dự án của mình để cung cấp cho tôi tệp .exe này không? –

+2

@johandroid Dự án của bạn phải là một Ứng dụng Console. Tạo dự án Vải dịch vụ mới từ đầu và chọn API web không quốc tịch. Một khi bạn tạo ra nó, hãy quan sát rằng nó cho thấy rằng nó là C# Console Application. Nếu bạn xây dựng nó, bạn sẽ nhận được EXE trong thư mục bin của bạn. Nếu bạn mở PackageRoot \ ServiceManifest.xml, bạn sẽ thấy rằng EXE được đặt là EntryPoint. Vì ASP.NET Core RC2 được xây dựng với ý tưởng về OWIN và WebAPI 2, bạn cần thiết lập cấu trúc dự án giống nhau. Hãy nhớ rằng không có IIS trong Service Fabric - Web App phải được tự lưu trữ và đó là những gì đang được thiết lập trong phương thức Main của bạn. –

+0

Tôi đang ở cùng một mức độ, tìm kiếm một ví dụ ... là có bất kỳ? Hiện tại, tôi sẽ theo https://blogs.msdn.microsoft.com/lucian/2015/08/19/using-project-json-for-other-project-types/ để sử dụng project.json, v.v. – rfcdejong

0

Như tôi đã đề cập đã có trong một bình luận, nó không phải là một ứng dụng console. Hãy xem https://github.com/weidazhao/Hosting

Sao chép và xem các dự án của SmsService và CounterService là các dự án ASP.NET Core 1.0 RC2.

+1

Điều đó không thực sự đúng. Dự án "Sms" trong giải pháp được đề cập thực sự là ứng dụng giao diện điều khiển - nó tạo ra một EXE trong thư mục bin/debug của bạn mà bạn có thể chạy. Chỉ bổ sung là trong toolchain lưu trữ toolchain cũng được thêm vào. Nếu bạn loại bỏ các dòng .UseServiceFabricEndpoint ("SmsTypeEndpoint") và ServiceRuntime.RegisterServiceAsync ("SmsType", serviceContext => new SmsService (serviceContext, communicationContext)). GetAwaiter(). GetResult(); và tạo tùy chọn appSettings.json, bạn sẽ có thể chạy EXE trên máy tính của riêng bạn mà không cần Service Fabric. –

+1

Vâng, đó dường như là mặc định cho các dự án ASP.NET Core, thông thường bạn sẽ sử dụng WebHostBuilder trong Chương trình.cs điểm vào chính. Thực tế là ứng dụng giao diện điều khiển bị ẩn. Với câu trả lời của tôi, tôi khuyên bạn không phải tự mình tạo một ứng dụng giao diện điều khiển, nhưng hãy để nó là một dự án ASP.NET Core. Câu trả lời của bạn cũng đúng, nhưng tôi đã trả lời bằng một liên kết đến một mẫu. – rfcdejong

Các vấn đề liên quan