我正在尝试将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/