身份服务器4作为控制台应用程序



我正在尝试将IdentityServer4作为控制台应用程序运行。但是我不确定我做对了。我创建了 console应用程序(.net core)而不是 asp.net core web应用程序(.net core)

我的WebHostBuilder设置非常简单:

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

启动类也很小:

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

我只是担心我是否缺少一些可能会导致问题的作品。我是正确的方式吗?

以下是使用 .net Core版本1.1

使用 Console应用程序(.NET CORE)创建项目。在Main方法中实现以下代码:

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

Startup类中实施以下代码:

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

要生成可执行文件,您不得在您的 project.json 中具有 "type": "platform"。例如,我的 project.json 看起来像这样:

{
  "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": {}
  }
}

您可以使用 dotnet Publish 命令生成可执行文件。

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

免责声明:这是最小的运行版本,也许您需要扩展配置,取决于您的需求。

每个.NET Core应用程序都是控制台应用程序。因此,这与您正在使用的模板没有区别。

,但我认为在您的主要位置 - 您错过了UseContentRoot的电话。

您可以按照https://blogs.msdn.microsoft.com/luisdem/2016/10/10/10/11/net-core-chore-net-core-how-to-to--publish-a-a-self-andapplication-exe/

相关内容