2016-05-21 47 views
7

Desidero aggiungere una nuova applicazione .NET Core RC2 MVC a un cluster di Service Fabric esistente, ma non riesco a capire come dovrei farlo..NET Core RC2 in Service Fabric

Ho esaminato diversi esempi di RC1 ma non mi ha ancora ottenuto. Capisco che è necessario aggiungere un EntryPoint nel file ServiceManifest.xml. Ma nella RC1 esempio, essi puntare al dnx.exe, che è stato rimosso in 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> 

Cosa EntryPoint dovrei usare nella versione RC2 di .NET Nucleo?

Grazie!

risposta

5

Partenza presente bando:

Announcing ASP.NET Core RC2

Come si può vedere, l'applicazione ASP.NET core con RC2 diventa un'applicazione console.

Detto questo, il punto di ingresso è il file EXE che viene fuori dalla compilazione dell'applicazione console ASP.NET Core.

Quindi, invece di fare affidamento su DNX per prelevare il metodo Main dal tuo Startup.cs, devi impostare la tua toolchain in Program.cs e quindi solo creare un EXE che Service Fabric userà per Entry.

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

Così il vostro manifesto sarebbe qualcosa di simile a questo:

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

Grazie per la risposta. Credo che sia corretto, ma la costruzione del progetto non mi fornisce un file .exe. Solo un .dll. Sai come posso impostare il mio progetto per fornirmi questo file .exe? –

+2

@johandroid Il progetto deve essere un'applicazione console. Crea da zero un nuovo progetto di Service Fabric e seleziona API Web Stateless. Una volta creato, osserva che mostra che si tratta di un'applicazione console C#. Se lo costruisci, otterrai EXE nella cartella bin. Se apri PackageRoot \ ServiceManifest.xml, noterai che EXE è impostato come EntryPoint. Poiché ASP.NET Core RC2 è stato creato con l'idea di OWIN e WebAPI 2, è necessario configurare la stessa struttura del progetto. Tieni presente che non c'è IIS in Service Fabric - L'app Web deve essere auto-ospitata e questo è ciò che viene impostato nel tuo metodo Main. –

+0

Sono allo stesso livello, alla ricerca di un esempio ... ce n'è? Per ora seguirò https://blogs.msdn.microsoft.com/lucian/2015/08/19/using-project-json-for-other-project-types/ per l'utilizzo del project.json etc – rfcdejong

0

Come ho già detto in un commento, che non deve essere un'applicazione console. Date un'occhiata a https://github.com/weidazhao/Hosting

Clonatelo e osservate che i progetti di SmsService e CounterService sono progetti RC2 di ASP.NET Core 1.0.

+1

In realtà non è giusto. Il progetto "Sms" nella soluzione menzionata è in realtà un'applicazione console - produce un EXE nella cartella bin/debug che è possibile eseguire. L'unica aggiunta è che all'interno di toolchain viene aggiunto anche l'hosting ServiceFabric. Se si rimuovono le righe .UseServiceFabricEndpoint ("SmsTypeEndpoint") e ServiceRuntime.RegisterServiceAsync ("SmsType", serviceContext => nuovo SmsService (serviceContext, communicationContext)). GetAwaiter(). GetResult(); e rendi opzionale appSettings.json, sarai in grado di eseguire EXE sul tuo PC senza Service Fabric. –

+1

Bene, questo sembra essere l'impostazione predefinita per i progetti ASP.NET Core, normalmente si utilizzerà WebHostBuilder in Programma.cs punto di ingresso principale. Il fatto che si tratti di un'applicazione console è nascosto. Con la mia risposta, ricordo che non è necessario creare un'applicazione console da soli, ma lasciare che sia un progetto ASP.NET Core. Anche la tua risposta è corretta, ma ho risposto con un link ad un campione. – rfcdejong

Problemi correlati