Unfortunately, our team member is out of working time at the moment. He will probably respond tomorrow during the day. Thank you for your patience.
Hello, our relevant team member will respond to you as soon as possible.
So question though, I need to use the APIService and bind it to another Controller/action, which will populate a dropdown, I initially also tried injecting the service yet still got the dependency injection exception.
Do not inject a controller into an ApplicationService, instead inject the corresponding repository service directly, or worst case inject the corresponding AppService.
Also the manager class, do I need that? I have not created a LearnworldsApiManager class though
This is completely up to your domain. Creating a Domain Service is especially needed when;
See more: https://abp.io/docs/latest/framework/architecture/domain-driven-design/domain-services
Note: If you feel unfamiliar with this, don't worry. Once you complete the BookStore tutorial, you will be much more familiar with these topics.
In this project, information about Author is also shown in Book UI. You can examine BookAppService to see what is done for this:
https://github.com/abpframework/abp-samples/blob/f34c5797fedc84445d2db403b9d7248f620f2ed4/BookStore-Angular-MongoDb/aspnet-core/src/Acme.BookStore.Application/Books/BookAppService.cs#L25
If you want to know more about this, I recommend you to follow our BookStore tutorial. See: https://abp.io/docs/latest/tutorials/book-store?UI=NG&DB=EF
No sir, in the previous version I am able to see external provider tab in host admin setting site without setting anything in host project?
Yes, you should see this tab on the Host side without making any settings.
Could you try on your side and give me the result?
When I create a template on the latest version of ABP Studio, I see the External Provider tab as default as below:
You can also create a new project with the following CLI command and verify whether it appears or not:
abp new Acme.BookStore -u angular -dbms PostgreSQL -m none --theme leptonx -csf
Can you create a new project with the CLI command below or with ABP Studio and confirm if it shows up for you?
abp new Acme.BookStore -u angular -dbms PostgreSQL -m none --theme leptonx -csf
Hello,
Unfortunately, ABP Suite does not currently support this feature. However, you can extend and add it via the code generated by the Suite. If you want your own code not to be overwritten by ABP Suite afterwards, you need to select the checkbox in the picture below and write your code to the extended classes accordingly. See more: https://abp.io/docs/latest/suite/customizing-the-generated-code
Hi,
First of all, you don't need to create an extended of each class. This is a feature to allow customization when code is generated with Suite. See more: https://abp.io/docs/latest/suite/customizing-the-generated-code
Secondly, you don't need to create a controller, ABP creates the controller for you from ApplicationService. But you can still create it if you want to, of course. See more: https://abp.io/docs/latest/framework/api-development/auto-controllers
In your case, there should be a structure like the one below:
ILearnworldsApiService:
public interface ILearnworldsApiService : IApplicationService
{
Task<LookupDto<LearnwroldsActivitiesDto>> GetActivitiesBySchoolAsync(Guid tenantId);
}
LearnworldsApiService:
public class LearnworldsApiService : MyAppService, ILearnworldsApiService
{
private readonly IMyRepository _myRepository;
private readonly MyLearnManager _myLearnManager;
public AuthorAppService(
IMyRepository myRepository,
MyLearnManager myLearnManager)
{
_myRepository = myRepository;
_myLearnManager = myLearnManager;
}
public async Task<LookupDto<LearnwroldsActivitiesDto>> GetActivitiesBySchoolAsync(Guid tenantId)
{
// ....
}
}
LearnworldsApiController:
You don't need it, but if you want to create it, you can create it similar to this one here: https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityUserController.cs
Hello Leeneshk,
If you share your ILearnworldsApiService and LearnworldsApiController constructor dependencies, We can provide more specific guidance.
Hello a.mourad,
IRemoteStreamContent interface is as follows:
public interface IRemoteStreamContent : IDisposable
{
string? FileName { get; }
string ContentType { get; }
long? ContentLength { get; }
Stream GetStream();
}
You can see that it contains streams.
Actually the exception is not thrown by ABP but by .NET. Here is why: https://stackoverflow.com/questions/55674322/getting-the-inner-stream-position-has-changed-unexpectedly-in-aws-lambda/55674833#55674833
Here's where the exception was thrown: https://github.com/dotnet/aspnetcore/blob/81b289460a9ce5fcbd0d32d80a645f139dffc422/src/Http/Http/src/Internal/ReferenceReadStream.cs#L70
Hello Mariovh,
You can check our Static C# API Client Proxies document for this. https://abp.io/docs/latest/framework/api-development/static-csharp-clients
Also, if you are having performance issues, I can recommend you to switch to Blazor WebApp from Blazor WASM. See differences: https://medium.com/@meghnav274/blazor-server-vs-blazor-webassembly-vs-blazor-web-app-8fe8fc1cefeb
Here is the migrating document: https://abp.io/docs/9.0/release-info/migration-guides/abp-8-2-blazor-web-app