dotnet / MobileBlazorBindings

Experimental Mobile Blazor Bindings - Build native and hybrid mobile apps with Blazor
MIT License
1.2k stars 168 forks source link

IJSRuntime : {System.NullReferenceException: Object reference not set to an instance of an object. in DelegatingHandler #443

Open nssidhu opened 2 years ago

nssidhu commented 2 years ago

@Eilon

I have filed the bug on with Refit, but was wondering if something is already known about this. I am trying to use IJSRuntime in Refit as for Adding Auth token using Delegating handler.

https://github.com/reactiveui/refit/issues/1316

Eilon commented 2 years ago

Hi @nssidhu , I think I've seen things like this happen when the wrong Dependency Injection (DI) scope is used. I think the IJSRuntime service can be consumed only from transitive or scoped services, but not from singleton service. Maybe that's the issue here?

nssidhu commented 2 years ago

I tried all singleton, transient & scoped, same error

builder.Services.AddScoped<RefitAuthHeaderHandler>();

            var setting = new RefitSettings
            {
                ContentSerializer = new NewtonsoftJsonContentSerializer(
                            new JsonSerializerSettings
                            {
                                ContractResolver = new CamelCasePropertyNamesContractResolver()
                            })
            };

            builder.Services.AddRefitClient<IXXXXXXXHttpAPI>(setting)
            .ConfigureHttpClient(c =>
                {
                    c.BaseAddress = new System.Uri("https://XXXXXppdev.azurewebsites.net/api");
                })
            .AddHttpMessageHandler<RefitAuthHeaderHandler>();