Hi ABP Team, I have a problem when upgrading to v8.2 and using new template of Blazor Web App. My current solution using version 8.1.4 as following:
Now I'd like to use the new application template Blazor Web App as the Main Application replace for the above Main Application (Blazor Web Assembly) and I don't know how to integrate these modules with the new Main Application structure as now we have 2 Blazor projects (Blazor and Blazor.Client). Is there any document or guidline for this case? I have tried to do as earlier versions but it seems having error with authentication when my component in module is using signalR and error happened with code of getting access_token In razor page I have injected: @inject IAccessTokenProvider TokenProvider and here code of SignalR:
#region SignalR
public async Task GetConnectSignalR()
{
var tokenResult = await TokenProvider.RequestAccessToken();
var apiURL = Configuration.GetValue<string>("SignalR:Url");
Console.WriteLine("Getting SignalR-Common from appsettings.json: " + apiURL);
try
{
if (tokenResult.TryGetToken(out var token))
{
_hubConnection = new HubConnectionBuilder()
.WithUrl($"{apiURL}", options =>
{
options.AccessTokenProvider = async () => await Task.FromResult(token.Value);
}).Build();
_hubConnection.On<NotificationCreateDto>("ReceiveMessage",
(message) =>
{
_messages.Add(message);
Console.WriteLine("Received message from server: " + message);
_ = GetNotificationListAsync();
});
await _hubConnection.StartAsync();
Console.WriteLine("SignalR-Common connected");
}
}
catch (Exception ex)
{
Console.WriteLine("Error starting HubConnection: " + ex.Message);
}
}
public async Task SendMessage()
{
try
{
await _hubConnection.SendAsync("SendMessage", _message);
_message = new NotificationCreateDto();
}
catch (Exception ex)
{
Console.WriteLine("Error sending message: " + ex.Message);
}
}
public void Dispose()
{
_ = _hubConnection?.DisposeAsync();
}
#endregion
Error: blazor.web.js:1 crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] Unhandled exception rendering component: Cannot provide a value for property 'TokenProvider' on type 'HQSOFT.Common.Blazor.Pages.Component.HQSOFTNotifications'. There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider'. System.InvalidOperationException: Cannot provide a value for property 'TokenProvider' on type 'HQSOFT.Common.Blazor.Pages.Component.HQSOFTNotifications'. There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider'. Thanks Dharma Han Nguyen
Hi @EngincanV, Could you please help me on this issue? Thanks
I restarted my computer now I can see the Home icon. Thanks for your support.
Anyone can help me on this issue? Thanks?
Hi,
I'm trying custom abp suite template to generate a custom method in Server.Repository.CustomCode.EfCoreRepository.Extended.txt.
In the template I have used this variable: %%dto-field-names-with-type%%, and it seem abp suite didn't understand and generated that text instead of replacing by the correct content:
Generated code:
Here my custom content in the template:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using %%solution-namespace%%.EntityFrameworkCore;
namespace %%solution-namespace%%.%%entity-namespace%% { public class EfCore%%entity-name%%Repository : EfCore%%entity-name%%RepositoryBase, I%%entity-name%%Repository { public EfCore%%entity-name%%Repository(IDbContextProvider<%%only-project-name%%DbContext> dbContextProvider) : base(dbContextProvider) { } public virtual async Task<List<%%entity-name%%>> GetListNoPagedAsync( string? filterText = null, %%dto-field-names-with-type%%%%<if:HasFilterableProperties>%%,%%</if:HasFilterableProperties>%% string? sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, CancellationToken cancellationToken = default) { var query = ApplyFilter((await GetQueryableAsync()), filterText%%<if:HasFilterableProperties>%%, %%</if:HasFilterableProperties>%%%%dto-field-names%%); query = query.OrderBy(string.IsNullOrWhiteSpace(sorting) ? %%entity-name%%Consts.GetDefaultSorting(false) : sorting); return await query.ToListAsync(cancellationToken); } } }