diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index 90233d3dd8..d3fec280ba 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -10,7 +10,16 @@ - + + + + + + + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs new file mode 100644 index 0000000000..8d4e92449f --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs @@ -0,0 +1,50 @@ +using System; +using System.Net.Http; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Autofac; +using Volo.Abp.Http.Client.IdentityModel; +using Volo.Abp.Modularity; + +namespace MyCompanyName.MyProjectName.Blazor +{ + [DependsOn( + typeof(AbpAutofacModule), + typeof(MyProjectNameHttpApiClientModule), + typeof(AbpHttpClientIdentityModelModule) + )] + public class MyProjectNameBlazorModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + var environment = context.Services.GetSingletonInstance(); + var builder = context.Services.GetSingletonInstance(); + + ConfigureAuthentication(builder); + ConfigureHttpClient(context, environment); + ConfigureUI(builder); + } + + private static void ConfigureAuthentication(WebAssemblyHostBuilder builder) + { + builder.Services.AddOidcAuthentication(options => + { + builder.Configuration.Bind("AuthServer", options.ProviderOptions); + }); + } + + private static void ConfigureUI(WebAssemblyHostBuilder builder) + { + builder.RootComponents.Add("app"); + } + + private static void ConfigureHttpClient(ServiceConfigurationContext context, IWebAssemblyHostEnvironment environment) + { + context.Services.AddTransient(sp => new HttpClient + { + BaseAddress = new Uri(environment.BaseAddress) + }); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor index 2ce028003e..000ee6f7f6 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor @@ -1,4 +1,6 @@ @page "/" +@using Volo.Abp.Identity +@inject IProfileAppService ProfileAppService

Hello, world!

@@ -8,4 +10,17 @@ Welcome to your new app. - +

Remote Service Test

+ +

Current user name: @_userName

+ + +@code +{ + private string _userName = "?"; + + private async Task GetUserNameAsync() + { + _userName = (await ProfileAppService.GetAsync()).UserName; + } +} \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs index 19c93e6edd..d536321f9a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Program.cs @@ -1,9 +1,9 @@ -using System; -using System.Net.Http; using System.Threading.Tasks; +using Autofac; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; namespace MyCompanyName.MyProjectName.Blazor { @@ -12,15 +12,18 @@ namespace MyCompanyName.MyProjectName.Blazor public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); - builder.RootComponents.Add("app"); - builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); + //TODO: Should be done in the ABP framework! + builder.Services.AddSingleton(builder.Configuration); + builder.Services.AddSingleton(builder); - builder.Services.AddOidcAuthentication(options => + builder.Services.AddApplication(opts => { - builder.Configuration.Bind("AuthServer", options.ProviderOptions); + opts.UseAutofac(); }); + builder.ConfigureContainer(builder.Services.GetSingletonInstance>()); + await builder.Build().RunAsync(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/appsettings.json index 397d3fa059..af7cddcc72 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/appsettings.json @@ -3,5 +3,10 @@ "Authority": "https://localhost:44305", "ClientId": "MyProjectName_Blazor", "ResponseType": "code" - } + }, + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44305" + } + } }