Open Closed

Blazor Web App SubDomain Tenant Mapping #7486


User avatar
1
dhill created
  • ABP Framework version: v8.2.0
  • UI Type: Blazor Web App
  • Database System: EF Core
  • Tiered (for MVC) or Auth Server Separated (for Angular): no
  • Steps to reproduce the issue:

Subdomain tenant mapping is not working correctly after converting a Blazor Server to Blazor Web App.

Behavior Initially a user can login to the tenant as normal but after a couple minutes the session will force a logout.

Partial Console Logs:

dotnet.runtime.8.0.7.3bvrr6lyon.js:3  warn: Volo.Abp.IdentityModel.IdentityModelAuthenticationService[0]
      Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration.
(anonymous) @ dotnet.runtime.8.0.7.3bvrr6lyon.js:3
dotnet.runtime.8.0.7.3bvrr6lyon.js:3 info: System.Net.Http.HttpClient.AbpMvcClient.LogicalHandler[100]
      Start processing HTTP request GET https://redacted.com/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0
dotnet.runtime.8.0.7.3bvrr6lyon.js:3 info: System.Net.Http.HttpClient.AbpMvcClient.ClientHandler[100]
      Sending HTTP request GET https://redacted.com/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0
dotnet.runtime.8.0.7.3bvrr6lyon.js:3 info: System.Net.Http.HttpClient.AbpMvcClient.ClientHandler[101]
      Received HTTP response headers after 160.1ms - 200
dotnet.runtime.8.0.7.3bvrr6lyon.js:3 info: System.Net.Http.HttpClient.AbpMvcClient.LogicalHandler[101]
      End processing HTTP request after 188.2ms - 200
dotnet.runtime.8.0.7.3bvrr6lyon.js:3  warn: Volo.Abp.IdentityModel.IdentityModelAuthenticationService[0]
      Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration.
dotnet.runtime.8.0.7.3bvrr6lyon.js:3 info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2]
      Authorization failed. These requirements were not met:
      DenyAnonymousAuthorizationRequirement: Requires an authenticated user.

Application Insights Logs

This issue does not present when logging into the main (admin) site. If subdomain tenant mapping is disabled the application works correctly.

Module Configuration Redacted.Blazor ---> RedactedBlazorModule.cs


33 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Please set your log level to Debug and reproduce the problem then share the logs.txt to liming.ma@volosoft.com

    Thanks.

    public class Program
    {
        public async static Task<int> Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
                .Enrich.FromLogContext()
                .WriteTo.Async(c => c.File("Logs/logs.txt"))
                .WriteTo.Async(c => c.Console())
                .CreateLogger();
    
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    Hi

    I was unable to download your files.

    Please share the files via https://wetransfer.com/

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Please share a URL and test username and password. I will check it online.

    Thanks

    liming.ma@volosoft.com

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    The authentication cookies belong greentherm.xxxplus-dev.com

    The API website is https://xxxplus-dev.com/api/abp/application-configuration

    So, the browser will not carry the greentherm.xxxplus-dev.com's cookies.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Can you try to change the BaseUrl from https://safetyplus-xxx.com to https://greentherm.safetyplus-xxx.com?

    I think in this way, you don't need to change the cookies.

  • User Avatar
    0
    dhill created

    Hi,

    Do you mean to try that as a test?

    The application is multi-tenant so that wouldn't work for all of the different clients.

    Also, I ran some tests with this code and although it adds a cookie with the '.' prefix it doesn't prevent the site from crashing.

    console.log("myleptonx.js loaded");
    
    function setCookie(name, value, domain, day = 365) {
        var expires = new Date();
        expires.setTime(expires.getTime() + (day * 24 * 60 * 60 * 1000));
        //prefix domain with '.' to make it work for subdomains
        document.cookie = name + '=' + value + ';expires=' + expires.toUTCString() + ';domain=.' + domain + ';path=/';
    }
    
    // Remove default event listener from leptonx theme in global.js
    document.body.removeEventListener('on', leptonx.AppearanceSettingEvent);
    
    // Hardcode to app.localhost for local testing
    setCookie("lpx_loaded-css", "dark", "app.localhost");
    
    
    // Add new event listener to leptonx theme with subdomain cookie
    //leptonx.AppearanceSettingEvent.on(document.body, evnet => {
    //    var theme = evnet.detail.theme;
    
    //    setCookie("lpx_loaded-css", theme, "app.localhost");
    //    setCookie("lpx_appearance", theme, "app.localhost");
    //});
    
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    I have checked.

    The https://greentherm.safetyplus-xxx.com can access Cookies from .xxxplus-dev.com

    So you can try to change the BaseUrl from https://safetyplus-xxx.com to https://greentherm.safetyplus-xxx.com or https://{{tenantName}}.safetyplus-xxx.com, also https://{0}.safetyplus-xxx.com

  • User Avatar
    0
    dhill created

    I changed the appsettings.json Blazor.Client to the following but we're still facing the same issue.

    { "RemoteServices": { "Default": { "BaseUrl": "https://{0}.xxxxxxplus-xxx.com" } }, "AbpCli": { "Bundle": { "Mode": "BundleAndMinify", "Name": "global", "IsBlazorWebApp": true, "InteractiveAuto": true, "Parameters": { "LeptonXTheme.Layout": "side-menu" } } } }

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    We have the PR to replace tenant name.

    https://github.com/abpframework/abp/pull/18592

    {0} will replaced by the current tenant name.

    https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.RemoteServices/Volo/Abp/Http/Client/RemoteServiceConfigurationProvider.cs#L34-L53

    Can you debug this method in local?

  • User Avatar
    0
    dhill created

    I loaded the symbols but the breakpoints don't ever get hit.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Try to create a MyRemoteServiceConfigurationProvider to override and replace it.

  • User Avatar
    0
    dhill created

    I created this class in the Blazor.Client project root directory. Is there a syntax to register it in the module startup?

    using Microsoft.Extensions.Options;
    using System.Threading.Tasks;
    using Volo.Abp.Http.Client;
    using Volo.Abp.MultiTenancy;
    
    namespace SafetyPlusWeb;
    
    public class MyRemoteServiceConfigurationProvider(IOptionsMonitor<AbpRemoteServiceOptions> options, IMultiTenantUrlProvider multiTenantUrlProvider, ICurrentTenant currentTenant) : RemoteServiceConfigurationProvider(options, multiTenantUrlProvider, currentTenant)
    {
        protected override async Task<RemoteServiceConfiguration?> GetMultiTenantConfigurationAsync(RemoteServiceConfiguration? configuration)
        {
            if (configuration == null)
                return configuration;
    
            var baseUrl = await MultiTenantUrlProvider.GetUrlAsync(configuration.BaseUrl);
            if (baseUrl == configuration.BaseUrl)
                return configuration;
    
            var multiTenantConfiguration = new RemoteServiceConfiguration(configuration)
            {
                BaseUrl = baseUrl
            };
    
            return multiTenantConfiguration;
        }
    }
    
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    [Dependency(ReplaceServices = true)]
    [ExposeServices(typeof(IRemoteServiceConfigurationProvider), typeof(RemoteServiceConfigurationProvider))]
    public class MyRemoteServiceConfigurationProvider
    

    https://abp.io/docs/latest/framework/fundamentals/dependency-injection#combining-all-together

  • User Avatar
    0
    dhill created

    Hi there,

    Even with those attributes the breakpoint isn't getting hit.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    You can inject the logger and write some error logs in your MyRemoteServiceConfigurationProvider. then check it in the browser console.

  • User Avatar
    0
    dhill created

    Hi,

    I added the following log entries to the code with breakpoints. The breakpoints arne't getting hit and the logs aren't writing to either the browser console or the Logs.txt or the Debug console.

    This is what the project looks like in terms of file structure.

    using Microsoft.Extensions.Logging;
    using Microsoft.Extensions.Options;
    using System.Threading.Tasks;
    using Volo.Abp.DependencyInjection;
    using Volo.Abp.Http.Client;
    using Volo.Abp.MultiTenancy;
    
    namespace SafetyPlusWeb.Blazor.Client;
    
    [Dependency(ReplaceServices = true)]
    [ExposeServices(typeof(IRemoteServiceConfigurationProvider), typeof(RemoteServiceConfigurationProvider))]
    public class MyRemoteServiceConfigurationProvider(ILogger<MyRemoteServiceConfigurationProvider> logger, IOptionsMonitor<AbpRemoteServiceOptions> options, IMultiTenantUrlProvider multiTenantUrlProvider, ICurrentTenant currentTenant) : RemoteServiceConfigurationProvider(options, multiTenantUrlProvider, currentTenant)
    {
        protected override async Task<RemoteServiceConfiguration?> GetMultiTenantConfigurationAsync(RemoteServiceConfiguration? configuration)
        {
            if (configuration == null)
            {
                logger.LogError("Configuration is null. Returning null.");
                return configuration;
            }
    
            var baseUrl = await MultiTenantUrlProvider.GetUrlAsync(configuration.BaseUrl);
    
            logger.LogError("Configuration for {ServiceName} is {BaseUrl}", nameof(MyRemoteServiceConfigurationProvider), baseUrl);
    
            if (baseUrl == configuration.BaseUrl)
                return configuration;
    
            var multiTenantConfiguration = new RemoteServiceConfiguration(configuration)
            {
                BaseUrl = baseUrl
            };
    
            return multiTenantConfiguration;
        }
    }
    
    This is the client module code.
    
    #pragma warning disable
    using System;
    using System.Net.Http;
    using Blazorise.Bootstrap5;
    using Blazorise.Icons.FontAwesome;
    using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
    using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.DependencyInjection.Extensions;
    using SafetyPlusWeb.Blazor.Client.Components.Layout;
    using SafetyPlusWeb.Blazor.Client.Navigation;
    using OpenIddict.Abstractions;
    using Volo.Abp.Account.Pro.Admin.Blazor.WebAssembly;
    using Volo.Abp.AspNetCore.Components.Web;
    using Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components;
    using Volo.Abp.AspNetCore.Components.Web.Theming.Routing;
    using Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme;
    using Volo.Abp.AuditLogging.Blazor.WebAssembly;
    using Volo.Abp.Autofac.WebAssembly;
    using Volo.Abp.AutoMapper;
    using Volo.Abp.Gdpr.Blazor.Extensions;
    using Volo.Abp.Gdpr.Blazor.WebAssembly;
    using Volo.Abp.Identity.Pro.Blazor.Server.WebAssembly;
    using Volo.Abp.Modularity;
    using Volo.Abp.UI.Navigation;
    using Volo.Abp.LanguageManagement.Blazor.WebAssembly;
    using Volo.Abp.LeptonX.Shared;
    using Volo.Abp.OpenIddict.Pro.Blazor.WebAssembly;
    using Volo.Abp.SettingManagement.Blazor.WebAssembly;
    using Volo.Abp.TextTemplateManagement.Blazor.WebAssembly;
    using Volo.Saas.Host.Blazor.WebAssembly;
    
    
    namespace SafetyPlusWeb.Blazor.Client;
    
    [DependsOn(
        typeof(AbpAccountAdminBlazorWebAssemblyModule),
        typeof(AbpAspNetCoreComponentsWebAssemblyLeptonXThemeModule),
        typeof(AbpAuditLoggingBlazorWebAssemblyModule),
        typeof(AbpAutofacWebAssemblyModule),
        typeof(AbpGdprBlazorWebAssemblyModule),
        typeof(AbpIdentityProBlazorWebAssemblyModule),
        typeof(AbpOpenIddictProBlazorWebAssemblyModule),
        typeof(AbpSettingManagementBlazorWebAssemblyModule),
        typeof(LanguageManagementBlazorWebAssemblyModule),
        typeof(SafetyPlusWebHttpApiClientModule),
        typeof(SaasHostBlazorWebAssemblyModule),
        typeof(TextTemplateManagementBlazorWebAssemblyModule)
    )]
    public class SafetyPlusWebBlazorClientModule : AbpModule
    {
        public override void PreConfigureServices(ServiceConfigurationContext context)
        {
            PreConfigure<AbpAspNetCoreComponentsWebOptions>(options =>
            {
                options.IsBlazorWebApp = true;
            });
        }
        
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            var environment = context.Services.GetSingletonInstance<IWebAssemblyHostEnvironment>();
            var builder = context.Services.GetSingletonInstance<WebAssemblyHostBuilder>();
    
            ConfigureAuthentication(builder);
            ConfigureHttpClient(context, environment);
            ConfigureBlazorise(context);
            ConfigureRouter(context);
            ConfigureMenu(context);
            ConfigureAutoMapper(context);
            ConfigureCookieConsent(context);
            ConfigureTheme();
        }
        
        private void ConfigureCookieConsent(ServiceConfigurationContext context)
        {
            context.Services.AddAbpCookieConsent(options =>
            {
                options.IsEnabled = true;
                options.CookiePolicyUrl = "/CookiePolicy";
                options.PrivacyPolicyUrl = "/PrivacyPolicy";
            });
        }
    
        private void ConfigureTheme()
        {
            Configure<LeptonXThemeOptions>(options =>
            {
                options.DefaultStyle = LeptonXStyleNames.System;
            });
        }
    
        private void ConfigureRouter(ServiceConfigurationContext context)
        {
            Configure<AbpRouterOptions>(options =>
            {
                options.AppAssembly = typeof(SafetyPlusWebBlazorClientModule).Assembly;
                options.AdditionalAssemblies.Add(typeof(SafetyPlusWebBlazorClientModule).Assembly);
            });
        }
    
        private void ConfigureMenu(ServiceConfigurationContext context)
        {
            Configure<AbpNavigationOptions>(options =>
            {
                options.MenuContributors.Add(new SafetyPlusWebMenuContributor(context.Services.GetConfiguration()));
            });
        }
    
        private void ConfigureBlazorise(ServiceConfigurationContext context)
        {
            context.Services
                .AddBootstrap5Providers()
                .AddFontAwesomeIcons();
        }
    
        private static void ConfigureAuthentication(WebAssemblyHostBuilder builder)
        {
            //TODO: Remove SignOutSessionStateManager in new version.
            builder.Services.TryAddScoped<SignOutSessionStateManager>();
            builder.Services.AddBlazorWebAppServices();
        }
        
        private static void ConfigureHttpClient(ServiceConfigurationContext context, IWebAssemblyHostEnvironment environment)
        {
            context.Services.AddTransient(sp => new HttpClient
            {
                BaseAddress = new Uri(environment.BaseAddress)
            });
        }
    
        private void ConfigureAutoMapper(ServiceConfigurationContext context)
        {
            Configure<AbpAutoMapperOptions>(options =>
            {
                options.AddMaps<SafetyPlusWebBlazorClientModule>();
            });
        }
    }
    
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Can I check it by zoom?

    https://us05web.zoom.us/j/87291194012?pwd=PmbAE6qr5bCKGGAnpRM3FKhfI7i24a.1

    You can join and share your screen.

    Thanks

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    I found the problem. I will provide the solution soon

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Please change "BaseUrl": "https://{{tenantName}}.safetyplus-dev.com" to "BaseUrl": "https://{0}.safetyplus-dev.com"

    And try adding WebAssemblyMultiTenantUrlProvider to your blazer.client project and check the error messages in the browser console.

    Thanks. I have refunded your ticket.

    [Dependency(ReplaceServices = true)]
    [ExposeServices(typeof(IMultiTenantUrlProvider), typeof(MultiTenantUrlProvider))]
    public class WebAssemblyMultiTenantUrlProvider : MultiTenantUrlProvider
    {
        private readonly static string[] ProtocolPrefixes = ["http://", "https://"];
    
        protected NavigationManager NavigationManager { get; }
        protected ILogger<WebAssemblyMultiTenantUrlProvider> Logger { get; }
    
        public WebAssemblyMultiTenantUrlProvider(
            ICurrentTenant currentTenant,
            ITenantStore tenantStore,
            NavigationManager navigationManager,
            ILogger<WebAssemblyMultiTenantUrlProvider> logger)
            : base(currentTenant, tenantStore)
        {
            NavigationManager = navigationManager;
            Logger = logger;
        }
    
        public async override Task<string> GetUrlAsync(string templateUrl)
        {
            Logger.LogError("templateUrl: " + templateUrl); // https://{0}.safetyplus-dev.com
    
            if (!CurrentTenant.IsAvailable)
            {
                var absoluteUri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
                var url = absoluteUri.Host;
                Logger.LogError("url: " + url); // greentherm.safetyplus-dev.com
    
                var extractResult = FormattedStringValueExtracter.Extract(url, templateUrl, ignoreCase: true);
                if (extractResult.IsMatch)
                {
                    var tenant = extractResult.Matches[0].Value; // should be greentherm
                    Logger.LogError("tenant: " + tenant);
                    
                    var apiUrl = templateUrl.Replace("{0}", tenant);
                    Logger.LogError("apiUrl: " + apiUrl); // https://greentherm.safetyplus-dev.com
                    return apiUrl;
                }
    
                Logger.LogError("No match tenant found");
            }
    
            return await GetUrlAsync(templateUrl);
        }
    }
    
    
  • User Avatar
    0
    dhill created

    Here is an except of the console logs.

    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          No match tenant found
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          templateUrl: https://{0}.app.localhost:44399
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          url: greentherm.app.localhost
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          No match tenant found
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          templateUrl: https://{0}.app.localhost:44399
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          url: greentherm.app.localhost
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          No match tenant found
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          templateUrl: https://{0}.app.localhost:44399
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          url: greentherm.app.localhost
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          No match tenant found
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
      fail: SafetyPlusWeb.Blazor.Client.WebAssemblyMultiTenantUrlProvider[0]
          templateUrl: https://{0}.app.localhost:44399
    (anonymous) @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Tl @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2504 @ 00b21cf6:1
    $func1874 @ 00b21cf6:1
    $func349 @ 00b21cf6:1
    $func245 @ 00b21cf6:1
    $func238 @ 00b21cf6:1
    $func272 @ 00b21cf6:1
    $func3185 @ 00b21cf6:1
    $func2505 @ 00b21cf6:1
    $func2511 @ 00b21cf6:1
    $func2535 @ 00b21cf6:1
    $mono_wasm_invoke_method_bound @ 00b21cf6:1
    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8
    kr @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    l.javaScriptExports.call_entry_point @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    Oc @ dotnet.runtime.8.0.7.urcsr75yt5.js:3
    callEntryPoint @ blazor.web.js:1
    ti @ blazor.web.js:1
    await in ti (async)
    ei @ blazor.web.js:1
    startWebAssemblyIfNotStarted @ blazor.web.js:1
    resolveRendererIdForDescriptor @ blazor.web.js:1
    determinePendingOperation @ blazor.web.js:1
    refreshRootComponents @ blazor.web.js:1
    (anonymous) @ blazor.web.js:1
    setTimeout (async)
    rootComponentsMayRequireRefresh @ blazor.web.js:1
    startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1
    
  • User Avatar
    0
    dhill created

    Here's an image of the console if that's easier to read.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    url: greentherm.app.localhost
    templateUrl: https://{0}.app.localhost:44399
    

    Try the code below:

    [Dependency(ReplaceServices = true)]
    [ExposeServices(typeof(IMultiTenantUrlProvider), typeof(MultiTenantUrlProvider))]
    public class WebAssemblyMultiTenantUrlProvider : MultiTenantUrlProvider
    {
        private readonly static string[] ProtocolPrefixes = ["http://", "https://"];
    
        protected NavigationManager NavigationManager { get; }
        protected ILogger<WebAssemblyMultiTenantUrlProvider> Logger { get; }
    
        public WebAssemblyMultiTenantUrlProvider(
            ICurrentTenant currentTenant,
            ITenantStore tenantStore,
            NavigationManager navigationManager,
            ILogger<WebAssemblyMultiTenantUrlProvider> logger)
            : base(currentTenant, tenantStore)
        {
            NavigationManager = navigationManager;
            Logger = logger;
        }
    
        public async override Task<string> GetUrlAsync(string templateUrl)
        {
            Logger.LogError("templateUrl: " + templateUrl); // https://{0}.app.localhost:44399
    
            if (!CurrentTenant.IsAvailable)
            {
                var absoluteUri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
                var url = absoluteUri.Authority.RemovePostFix("/");
                Logger.LogError("url: " + url); // greentherm.app.localhost:44399
                
                var myTemplateUrl = templateUrl.RemovePreFix(ProtocolPrefixes).RemovePostFix("/");
                Logger.LogError("myTemplateUrl: " + url); // {0}.app.localhost:44399
                
                var extractResult = FormattedStringValueExtracter.Extract(url, myTemplateUrl, ignoreCase: true);
                if (extractResult.IsMatch)
                {
                    var tenant = extractResult.Matches[0].Value; // should be greentherm
                    Logger.LogError("tenant: " + tenant);
                    
                    var apiUrl = templateUrl.Replace("{0}", tenant);
                    Logger.LogError("apiUrl: " + apiUrl); // https://greentherm.app.localhost:44399
                    return apiUrl;
                }
                
                Logger.LogError("No match tenant found");
            }
    
            return await GetUrlAsync(templateUrl);
        }
    }
    

    Thanks.

  • User Avatar
    0
    dhill created

    Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.call_entry_point @ managed-exports.ts:60 Oc @ run.ts:44 callEntryPoint @ blazor.web.js:1 ti @ blazor.web.js:1 await in ti (async) ei @ blazor.web.js:1 startWebAssemblyIfNotStarted @ blazor.web.js:1 resolveRendererIdForDescriptor @ blazor.web.js:1 determinePendingOperation @ blazor.web.js:1 refreshRootComponents @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 setTimeout (async) rootComponentsMayRequireRefresh @ blazor.web.js:1 startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1 blazor.web.js:1 (null) Ar @ blazor.web.js:1 put_char @ dotnet.native.8.0.7.37dkch2d2y.js:8 write @ dotnet.native.8.0.7.37dkch2d2y.js:8 write @ dotnet.native.8.0.7.37dkch2d2y.js:8 doWritev @ dotnet.native.8.0.7.37dkch2d2y.js:8 _fd_write @ dotnet.native.8.0.7.37dkch2d2y.js:8 $func8373 @ 00b21cf6:0x1fb6ce $func8502 @ 00b21cf6:0x20351d $func8512 @ 00b21cf6:0x204f1f $func8377 @ 00b21cf6:0x1fbb05 $func1673 @ 00b21cf6:0x8dafb $func3199 @ 00b21cf6:0xe985a $func3201 @ 00b21cf6:0xe98c0 $func3353 @ 00b21cf6:0xf7efe $func345 @ 00b21cf6:0x1f705 $func240 @ 00b21cf6:0x1ba5f $func238 @ 00b21cf6:0x1b7c3 $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:236 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:177 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:177 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:236 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 (anonymous) @ invoke-cs.ts:184 endInvokeJSFromDotNet @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.web.js:1 ri @ blazor.web.js:1 (anonymous) @ invoke-js.ts:233 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:177 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:236 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 (anonymous) @ invoke-cs.ts:184 endInvokeJSFromDotNet @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.web.js:1 ri @ blazor.web.js:1 (anonymous) @ invoke-js.ts:233 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2504 @ 00b21cf6:0xbe43c $func1874 @ 00b21cf6:0x9a502 $func349 @ 00b21cf6:0x1fb7f $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.call_entry_point @ managed-exports.ts:60 Oc @ run.ts:44 callEntryPoint @ blazor.web.js:1 ti @ blazor.web.js:1 await in ti (async) ei @ blazor.web.js:1 startWebAssemblyIfNotStarted @ blazor.web.js:1 resolveRendererIdForDescriptor @ blazor.web.js:1 determinePendingOperation @ blazor.web.js:1 refreshRootComponents @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 setTimeout (async) rootComponentsMayRequireRefresh @ blazor.web.js:1 startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1 {0}.app.localhost:44399/api/account/profile-picture-file/d3a58a5b-0605-02eb-49f4-3a13b6093bbf:1

        GET https://{0}.app.localhost:44399/api/account/profile-picture-file/d3a58a5b-0605-02eb-49f4-3a13b6093bbf net::ERR_NAME_NOT_RESOLVED
    

    Image (async) setOrRemoveAttributeOrProperty @ blazor.web.js:1 applyAttribute @ blazor.web.js:1 insertElement @ blazor.web.js:1 insertFrame @ blazor.web.js:1 insertFrameRange @ blazor.web.js:1 insertElement @ blazor.web.js:1 insertFrame @ blazor.web.js:1 insertFrameRange @ blazor.web.js:1 insertElement @ blazor.web.js:1 insertFrame @ blazor.web.js:1 insertFrameRange @ blazor.web.js:1 insertElement @ blazor.web.js:1 insertFrame @ blazor.web.js:1 insertFrameRange @ blazor.web.js:1 insertElement @ blazor.web.js:1 insertFrame @ blazor.web.js:1 insertFrameRange @ blazor.web.js:1 insertElement @ blazor.web.js:1 insertFrame @ blazor.web.js:1 applyEdits @ blazor.web.js:1 updateComponent @ blazor.web.js:1 xe @ blazor.web.js:1 yt._internal.renderBatch @ blazor.web.js:1 (anonymous) @ invoke-js.ts:201 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:236 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:177 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:177 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:236 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 (anonymous) @ invoke-cs.ts:184 endInvokeJSFromDotNet @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.web.js:1 ri @ blazor.web.js:1 (anonymous) @ invoke-js.ts:233 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:177 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.complete_task @ managed-exports.ts:142 (anonymous) @ marshal-to-cs.ts:335 Promise.then (async) mo @ marshal-to-cs.ts:329 (anonymous) @ marshal-to-cs.ts:83 (anonymous) @ invoke-js.ts:236 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 (anonymous) @ invoke-cs.ts:184 endInvokeJSFromDotNet @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 Promise.then (async) beginInvokeJSFromDotNet @ blazor.web.js:1 ri @ blazor.web.js:1 (anonymous) @ invoke-js.ts:233 Tl @ invoke-js.ts:276 $func349 @ 00b21cf6:0x1fafb $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2504 @ 00b21cf6:0xbe43c $func1874 @ 00b21cf6:0x9a502 $func349 @ 00b21cf6:0x1fb7f $func245 @ 00b21cf6:0x1bf9f $func238 @ 00b21cf6:0xf16c $func272 @ 00b21cf6:0x1d1bd $func3185 @ 00b21cf6:0xe8756 $func2505 @ 00b21cf6:0xbe4ac $func2511 @ 00b21cf6:0xbecd0 $func2535 @ 00b21cf6:0xc1327 $mono_wasm_invoke_method_bound @ 00b21cf6:0xa4fa Module._mono_wasm_invoke_method_bound @ dotnet.native.8.0.7.37dkch2d2y.js:8 kr @ invoke-cs.ts:273 l.javaScriptExports.call_entry_point @ managed-exports.ts:60 Oc @ run.ts:44 callEntryPoint @ blazor.web.js:1 ti @ blazor.web.js:1 await in ti (async) ei @ blazor.web.js:1 startWebAssemblyIfNotStarted @ blazor.web.js:1 resolveRendererIdForDescriptor @ blazor.web.js:1 determinePendingOperation @ blazor.web.js:1 refreshRootComponents @ blazor.web.js:1 (anonymous) @ blazor.web.js:1 setTimeout (async) rootComponentsMayRequireRefresh @ blazor.web.js:1 startLoadingWebAssemblyIfNotStarted @ blazor.web.js:1

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    https://us05web.zoom.us/j/82128719932?pwd=NSkf1WcgITWWyrGKvgMw8xqrZnFaeC.1

Made with ❤️ on ABP v9.1.0-preview. Updated on November 11, 2024, 11:11