microsoft-identity-web
microsoft-identity-web copied to clipboard
[Bug] Cannot resolve scoped service when Debug via Visual Studio on Windows - Works using Linux Container
Microsoft.Identity.Web Library
Microsoft.Identity.Web.DownstreamApi
Microsoft.Identity.Web version
2.18.1
Web app
Sign-in users and call web APIs
Web API
Protected web APIs call downstream web APIs
Token cache serialization
In-memory caches
Description
Using Microsoft Identity Abstractions version 5.3.0 via Microsoft.Identity.Web.DownstreamApi version 2.18.1, the call to app.MapWebPubSubHub<webpubsub>("/eventhandler/{*path}");
triggers System.InvalidOperationException: 'Cannot resolve scoped service 'Microsoft.Identity.Abstractions.IDownstreamApi' from root provider.' only when debugging via Visual Studio (latest version - 17.9.6) on Windows.
When run in a Linux Container the app runs fine.
I initially logged the bug in the abstractions library https://github.com/AzureAD/microsoft-identity-abstractions-for-dotnet/issues/128
Reproduction steps
Debug an ASP.NET 8.0 application using multiple IDP's and Azure Web PubSub.
// IDP 1
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("EntraExternalID"))
.EnableTokenAcquisitionToCallDownstreamApi()
.AddDownstreamApi("ServiceA", builder.Configuration.GetSection("ServiceA"))
.AddDownstreamApi("ServiceB", builder.Configuration.GetSection("ServiceB"))
.AddInMemoryTokenCaches();
// IDP 2
builder.Services.AddAuthentication().AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("EntraID"), "EntraID");
// Add Web PubSub Service Client
builder.Services.AddWebPubSub(options =>
{
var config = builder.Configuration.GetSection("Config").Get<Configuration<Config>>();
options.ServiceEndpoint = new WebPubSubServiceEndpoint(config.ConnectionString);
}).AddWebPubSubServiceClient<webpubsub>();
// standard init in between e.g. var app = builder.Build();
// Further down map web pubsub event handler
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.MapWebPubSubHub<webpubsub>("/eventhandler/{*path}");
app.Run();
Error message
System.InvalidOperationException: 'Cannot resolve scoped service 'Microsoft.Identity.Abstractions.IDownstreamApi' from root provider.'
Id Web logs
No response
Relevant code snippets
As per reproduction steps.
Regression
No response
Expected behavior
Error is not observed when debugging on Windows via Visual Studio.