任务被取消
问题描述:
我正尝试在同一个启动*同承载identityserver3和web api(用于使用持票人令牌的用户管理)。但是,我收到以下错误: 任务被取消。 当尝试拨打http://identity_local/core/.well-known/openid-configuration(identity_local指向本地主机)时,似乎任务取消在启动时发生。任务被取消
我启动如下:
app.Map("/core", idsrvApp =>
{
var factory = new IdentityServerServiceFactory();
factory.UserService = new IdentityServer3.Core.Configuration.Registration<IUserService, UserService>();
factory.ScopeStore = new IdentityServer3.Core.Configuration.Registration<IScopeStore>(resolver => scopeStore);
var options = new IdentityServerOptions
{
SigningCertificate = Certificate.Load(),
IssuerUri = "http://identity_local/core",
PublicOrigin = "http://identity_local",
RequireSsl = false, //for now
Factory = factory,
};
idsrvApp.UseIdentityServer(options);
});
app.Map("/admin", adminApp =>
{
adminApp.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "http://identity_local/core",
IssuerName = "identity_local",
ValidationMode = ValidationMode.Local,
RequiredScopes = new[] { "api", "roles" }
});
adminApp.UseResourceAuthorization(new AuthorisationManager());
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
adminApp.UseCors(CorsOptions.AllowAll);
adminApp.UseWebApi(config);
});
有谁知道如果)有可能都在相同的启动和b)如果是这样,我做了什么错误或我能做些什么来有补救以上。
答
在启动时UseIdentityServerBearerTokenAuthentication
试图联系IdentityServer metatadata终点,但因为服务器尚未运行它无法连接,从而错误。
对于这种情况,有一个叫DelayLoadMetadata
延迟加载元数据在第一时间它的需要,直到标志:https://identityserver.github.io/Documentation/docsv2/consuming/options.html
你是我的英雄!我正在寻找一个星期的解决方案。而简单地设置'DelayLoadMetadata = TRUE;在'IdentityServerBearerTokenAuthenticationOptions'没有的伎俩。这应该definitley被标记为正确的答案。实际上它应该在IdentityServer3的入门演练中。 – Michael