IdentityServer 4 作为控制台应用程序
IdentityServer 4 as a Console Application
我正在尝试 运行 IdentityServer4 作为控制台应用程序。但我不确定我是否做对了。我创建了 控制台应用程序 (.NET Core) 而不是 ASP.NET 核心 Web 应用程序 (.NET Core).
我对 WebHostBuilder
的设置非常简单:
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
此外 Startup class 非常小:
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 应用程序都是一个控制台应用程序。因此,您使用的模板没有区别。
但我认为在您的主体中 - 您错过了对 UseContentRoot
的呼叫。
中所述发布 self-contained 应用程序
以下是使用 .NET Core 版本 1.1.
创建 Identity Server v4 可执行文件的步骤
使用控制台应用程序 (.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
class中执行以下代码:
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
免责声明:这是最小 运行 版本,也许您需要扩展配置,具体取决于您的需要。
我正在尝试 运行 IdentityServer4 作为控制台应用程序。但我不确定我是否做对了。我创建了 控制台应用程序 (.NET Core) 而不是 ASP.NET 核心 Web 应用程序 (.NET Core).
我对 WebHostBuilder
的设置非常简单:
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
此外 Startup class 非常小:
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 应用程序都是一个控制台应用程序。因此,您使用的模板没有区别。
但我认为在您的主体中 - 您错过了对 UseContentRoot
的呼叫。
以下是使用 .NET Core 版本 1.1.
创建 Identity Server v4 可执行文件的步骤使用控制台应用程序 (.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
class中执行以下代码:
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
免责声明:这是最小 运行 版本,也许您需要扩展配置,具体取决于您的需要。