I have not been able to reproduce the problem, but this problem can often be caused by parameters having different names.
Please make sure that the parameter names of bPEC1003SMTAppService and IbPEC1003SMTAppService are the same.
Hi Raif,
You can mock the IFeatureStore service instead IFeatureChecker. (https://github.com/abpframework/abp/blob/dev/framework/test/Volo.Abp.Features.Tests/Volo/Abp/Features/TestFeatureStore.cs#L9)
Hello thanhlg 🙋♂️,
You can use this article for a case-sensitive search. See: https://abp.io/community/articles/caseinsensitive-search-in-abp-basedpostgresql-application-c9kb05dc
I can say that searching by foreign key fields is completely specific to your business. Therefore, you need to manually update the templates of AppService, Repository, and UI side.
How to do this is explained in this document.
Hi,
You can use IRemoteStreamContent in app service. Then follow https://github.com/abpframework/abp/issues/6384#issuecomment-739245736
See more: https://abp.io/support/questions/1174/Incorrect-proxy-generated-for-file-upload-API-Cannot-find-name-%27StringValues%27
Hi,
Unfortunately, we don't have any documentation on this, but I've searched a bit on the web to help you and Entra (formerly Azure AD) seems to have some documentation on this.
See:
Since this is not related to ABP and we do not have much experience on it, I cannot help more, but I hope the documents I have shared will be useful.
Hi,
Can you share the Controller and AppService methods so that I can understand the problem better?
Hi,
To move the Toolbar from the right to the bottom of the navigation bar, you'll need to customize the layout of the theme you're using. How to do this and how to download the source code is explained in detail here 👉 https://abp.io/support/questions/8873/How-to-override--Replace--Change-a-page%27s-layout-in-ABP-MVC
Hi,
Could you also please share the steps to reproduce the problem and share the related code blocks, especially from the SeedTestData() method where the PermissionDataSeeder.SeedAsync(...) method is called?
This will help us better understand the root cause and provide you with a more accurate solution. Thank you!
Hello,
First of all, I have tested this in both versions to verify what you are saying and as a result I can confirm what you are saying. When upgrading to ABP 9.x, the account management experience has been improved and changed by default. In the Microservice template, the user profile menu items like "Manage Account" now point directly to the AuthServer’s /Account/Manage page. This is intentional because identity-related actions (change password, update profile, etc.) are centralized in the AuthServer.
If you want to keep using your Angular app’s own /account/management page instead of redirecting to the AuthServer, I’m personally not sure whether this is fully supported. However, if it’s possible, someone from the Angular team will let you know how it can be implemented.
Hello,
Yes, I can reproduce what you said last time. There is nothing wrong here, it works as expected. However, I think you are using UsePathBase incorrectly.
If you use UsePathBase(“/auth”), the requests should be /auth/api/account/... not /api/account/.... So you also need to change the endpoint of the controllers.
I created a class like below to change the prefix of all controllers:
public class GlobalRouteReplaceConvention : IApplicationModelConvention
{
private readonly string _oldPrefix;
private readonly string _newPrefix;
public GlobalRouteReplaceConvention(string oldPrefix, string newPrefix)
{
_oldPrefix = oldPrefix.Trim('/');
_newPrefix = newPrefix.Trim('/');
}
public void Apply(ApplicationModel application)
{
foreach (var controller in application.Controllers)
{
foreach (var selector in controller.Selectors.Where(s => s.AttributeRouteModel != null))
{
var template = selector.AttributeRouteModel.Template;
if (template.StartsWith(_oldPrefix))
{
selector.AttributeRouteModel.Template = _newPrefix + template.Substring(_oldPrefix.Length);
}
else
{
selector.AttributeRouteModel = AttributeRouteModel.CombineAttributeRouteModel(
new AttributeRouteModel(new Microsoft.AspNetCore.Mvc.RouteAttribute(_newPrefix)),
selector.AttributeRouteModel
);
}
}
}
}
}
Then I called it in the ConfigureServices method of the module as follows:
context.Services.AddControllers(options =>
{
options.Conventions.Insert(0, new GlobalRouteReplaceConvention("api", "auth/api"));
});
Result:
Then I added app.UsePathBase(“/auth”); middleware as you did.
Then in my case everything works properly.
If you think I misunderstood your question, I would be grateful if you could direct me again 😊