2017-02-17 5 views
0

Ich versuche, IdentityServer4 als Konsolenanwendung auszuführen. Aber ich bin mir nicht sicher, ob ich es richtig mache. Ich erstellte Konsole-Anwendung (.NET Core) anstelle von ASP.NET-Core-Webanwendung (.NET Core).IdentityServer 4 als Konsolenanwendung

Mein Setup von WebHostBuilder ist ziemlich einfach:

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

     host.Run(); 
    } 
} 

Auch die Startup Klasse ist sehr klein:

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddIdentityServer() 
       .AddTemporarySigningCredential() 
       .AddInMemoryIdentityResources(Config.GetIdentityResources()) 
       .AddInMemoryApiResources(Config.GetApiResources()) 
       .AddInMemoryClients(Config.GetClients()) 
       .AddTestUsers(Config.GetUsers()); 
    } 

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(); 
     app.UseIdentityServer(); 
    } 
} 

Ich bin nur besorgt, wenn ich ein paar Stücke bin fehlt die geeignet sind, führen zu Problemen später. Bin ich auf dem richtigen Weg?

Antwort

2

Hier sind die Schritte Identity Server v4 Executable mit .NET Core-Version 1.1 zu erstellen.

Erstellen Sie ein Projekt mit Konsolenanwendung (.NET Core). Im Main Methode implementieren folgenden Code:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     Console.Title = "IdentityServer"; 

     var host = new WebHostBuilder() 
      .UseKestrel() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 
    } 
} 

Im Startup Klasse implementieren folgenden Code:

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     // configure identity server with in-memory stores, keys, clients and scopes 
     services.AddIdentityServer() 
      .AddTemporarySigningCredential() 
      .AddInMemoryApiResources(Config.GetApiResources()) 
      .AddInMemoryClients(Config.GetClients()) 
      .AddTestUsers(Config.GetUsers()); 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(LogLevel.Debug); 
     app.UseDeveloperExceptionPage(); 

     app.UseIdentityServer(); 
    } 
} 

ausführbare Datei zu erzeugen, Sie nicht ein "type": "platform" in Ihrem project.json haben muss. Zum Beispiel mein project.json sieht wie folgt aus:

{ 
    "dependencies": { 
    "IdentityServer4": "1.1.1", 
    "Microsoft.AspNetCore.Diagnostics": "1.1.0", 
    "Microsoft.AspNetCore.Hosting": "1.1.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0", 
    "Microsoft.Extensions.Logging.Console": "1.1.0", 
    "Microsoft.NETCore.App": { 
     "version": "1.1.0" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.1": { 
    } 
    }, 

    "runtimes": { 
    "win7-x64": {}, 
    "win8-x64": {}, 
    "win10-x64": {} 
    } 
} 

als Sie mit Dotnet veröffentlichen Befehl wie unten ausführbare erzeugen kann.

dotnet publish -c release -r win7-x64
dotnet publish -c release -r win8-x64
dotnet publish -c release -r win10-x64

Haftungsausschluss: Dies ist minimal Lauf Version, vielleicht werden Sie erweiterte Konfiguration benötigen, hängt davon ab, was Sie brauchen.

0

Jede .NET Core-Anwendung ist eine Konsolenanwendung. Es macht also keinen Unterschied, welche Vorlage Sie verwenden.

Aber ich denke in Ihrem Haupt - Sie verpassen einen Anruf an UseContentRoot.

+0

Ja, das stimmt, ich möchte _IdentityServer_ als _ *. Exe_ ausführen. Kann ich dies mit _ASP.Net Core_ template tun? Oh, und danke für den Hinweis mit 'UseContentRoot'. Was bedeutet diese Einstellung? –

+0

Wenn Sie auf das gesamte Framework abzielen, erhalten Sie von execnetcore immer eine DLL, die Sie mit dotnet run ausführen können. – leastprivilege

Verwandte Themen