I am using a Syncfusion Component similar to the ABP FileManager for handling large Files Upload. We use it because it supports asynchron chunk uploads,what is necessary for us. large Files means files bigger than 30mb up to 50GB like Windows OS Isos or a virtual disk.
Our Project was created with ABP 4.3.2 and that upload parts runs without problems. I tested an an windows 10 machine with visual studio (without any antivirus /windows defender deactivated for repo folder)
I did prepare a working sample for you. Just contact me per Mail and i provide you the link.
With ABP 4.3.2 we get this:
With ABP 4.4.2 we get an error at the FileManagerController.cs (Line 173). Check this after you get the code.
So please check the reason for that issue.
Besides that technical problem, i would like to know:
I hope you answer all my questions. and we fix that problem soon.
Hi ABP Support,
1)
i find it hard to use your forum and find relevant posts.
You should at least provide a Link like the other above in the forum Howto search here.... It would be great if you could find a better way for use... like Github or whateveer forum..
2) I find it not suitable that there is no FeedBack Portal for the commcercial Part of ABP like here for Example : https://www.syncfusion.com/feedback I would like to post in such a forum especially Feature Requests for all your modules, for abp suite for example. You could see which feature Request gains the mosts Interest and we could follow better that requests. I did try posting such requests in the past in github, but it seems not to work good for me..
I wrote this here and opened a ticket because coudn't find better informations from you.. This is not customer oriented. I hope you are interested in our input as customer how to get things better here for us.
If you're creating a bug/problem report, please include followings:
We generated our base code with abp suite. It does generate in every entity repository a IQueryable<T> ApplyFilter Function. Asume that you have over 100.000 Entries for an entity.
a) We would like to have the ability to get only a few selected items (as List<Guid>) from the database. So similar to filterText we want to add a parameter filterIds to be able to get only these Ids as result.
Normally you would provide for every Entity like Car something like this:
public static class QueryableExtensions
{
public static IQueryable<Car> IncludeFilterIds(
this IQueryable<Car> queryable,
List<Guid> filterIds = null)
{
if (!filterIds.IsNullOrEmpty())
{
return queryable
.WhereIf(!filterIds.IsNullOrEmpty(), e => filterIds.Contains(e.Id));
}
return queryable;
}
}
I would like to have this ability for every entity, so i tried;
public static class QueryableExtensions
{
public static IQueryable<IEntity<Guid>> IncludeFilterIds(
this IQueryable<IEntity<Guid>> queryable,
List<Guid> filterIds = null)
{
if (!filterIds.IsNullOrEmpty())
{
return queryable
.WhereIf(!filterIds.IsNullOrEmpty(), e => filterIds.Contains(e.Id));
}
return queryable;
}
I did call it with:
var query = ApplyFilter((await GetQueryableAsync()), filterText, filterIds, name, description);
query = (IQueryable<Car>) query.IncludeFilterIds(filterIds);
But this wont work as expected.causing a casting exception. Of course i can us instead of "IEntity<Guid>" "dynamic" as type, but then i wont have the Id Field, and will need to get it per reflection.
What is here the best approach ? In your examples at https://docs.abp.io/en/abp/latest/Repositories you implement the IQueryable Logic at Application Level. Is this suggested instead of Entity Framework Level ?
b) I further would like to limit the properties in a generic way. Sometimes you need only one field like Id instead the whole table. ( so instead select * from db , i would use select id from db) For a known data type i could expand above solution with:
return queryable
.WhereIf(!filterIds.IsNullOrEmpty(), e => filterIds.Contains(e.Id));
.Select(p => new { p.Id });
But again if i want to do it an an generic way , i will first need to implement a parameter like List<string> proplist and then add it to the query without knowing the datatype. Do you got an idea howto achieve that ?
I think both functionaltities can be used everywhere..
Hope, you could help.,
In my Application Module i would like to configure the JsonIgnoreCondition. I did take a look at https://docs.abp.io/en/abp/latest/JSON I used AbpSystemTextJsonSerializerOptions, what did not work as expected.
I use this code in my Application Module:
I am not sure this is a bug or i am missing something ? I would expect after reading the documentation that the first way should work.
I had some trouble here to paste the code from above. all strings between the square brackets are deleted :
this becomes: options.AddMaps(), (a bug here in the editor ?)
Hi , i am using Syncfusion Blazor Componentsto to handle upload and dowload like in this ApiController Code:
[RemoteService]
[Area("app")]
[ControllerName("FileManager")]
[Route("api/app/filemanager")]
[IgnoreAntiforgeryToken]
public class FileManagerController : AbpController, IFileManagerAppService
{
{
// Processing the Download operation
[Route("Download")]
public IActionResult Download(string downloadInput)
{
//Invoking download operation with the required paramaters
// path - Current path where the file is downloaded; Names - Files to be downloaded;
FileManagerDirectoryContent args = JsonConvert.DeserializeObject<FileManagerDirectoryContent>(downloadInput);
return operation.Download(args.Path, args.Names);
}
// Processing the Upload operation
[Route("Upload")]
public IActionResult Upload(string path, IList<IFormFile> uploadFiles, string action)
{
//Invoking upload operation with the required paramaters
// path - Current path where the file is to uploaded; uploadFiles - Files to be uploaded; action - name of the operation(upload)
FileManagerResponse uploadResponse;
uploadResponse = operation.Upload(path, uploadFiles, action, null);
if (uploadResponse.Error != null)
{
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.StatusCode = Convert.ToInt32(uploadResponse.Error.Code);
Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = uploadResponse.Error.Message;
}
return Content("");
}
}
Here all the work is done in the ApiController.
I want to be able to integrate that ApiCalls in an ApplicationService, so i can easly access it, from other Applicationservices and UI. Normally an ApiController just call the same method in Application Service, but this time it should be otherwise.
I tried this so far:
public interface IFileManagerAppService : IApplicationService
{
Task<IActionResult> Download(string downloadInput);
Task<IActionResult> Upload(string path, IList<IFormFile> uploadFiles, string action);
}
public class FileManagerAppService : ApplicationService , IFileManagerAppService
{
public FileManagerAppService()
{
}
How should i implement them here, if the work is done in apicontroller ?
// Task<IActionResult> Download(string downloadInput)
//Task<IActionResult> Upload(string path, IList<IFormFile> uploadFiles, string action)
}
I doesn't seem to be a good way to implement all logic in appication layer, because its an lowlevel api, which also uses a physical Layer etc . A lot more is done in that layer. look here : https://blazor.syncfusion.com/documentation/file-manager/getting-started
So how can i solve this ? I would like to be to call these Method after injection at Blazor Client-side .
I use the microservice-pro template v5.2 which uses as DB EntityFramework. Is there a reason why its not possible to choose the DB provider like in other templates with abp cli (-db mongodb)? In our production enviroment we gonna use azure cosmodb for all databases, so instead of mixing different db providers it should be possible to switch/create directly for all mongodb. with abp cli. Or is there a good reason not to do soo ? Also an example based complete on mongodb with the microservice template would be great.
I did try you document: https://docs.abp.io/en/commercial/latest/guides/microservice-mongodb
But it doesn't seem to match to the current v5.2. It would be great if you could update that as soon as possible. Currently i have errors with ProductServiceDatabaseMigrationChecker etc.
I have built up a microservice solution and would like to add an other project based on the standard template pro as service to it. At the end my solution will look similiar to you eshoponabp project, where you use postgres and mongo as db.
i did follow the doc from here: https://docs.abp.io/en/commercial/latest/startup-templates/microservice/add-microservice to generate a service with the same name. It seems that the parameter for the database provider is ignored (-d mongo) . It always creates a service based on EF. Is this a bug ?
I did also compare the generated files from the new service with the files from the standard template pro and found differences in the module files and structure. I would like to know howto modify the files from the standard template to be able to use it as service in the microservice solution.
As far as i can see, i need to edit all csproj files and *module.cs files to remove unneeded things and add at least something like "typeof(AbpDddDomainModule)," etc., remove Identity Project, move some files to other projects and so on.
I would like to have a detailed step by step guide for a demo project like eventhub /boookstore to see howto integrate it in a microservice solution, Any help would be great
If you're creating a bug/problem report, please include followings:
AppMicro.PublicWeb terminated unexpectedly! System.TypeLoadException: Could not load type 'Volo.Abp.IAsyncInitialize' from assembly 'Volo.Abp.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null'. at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType) at System.Reflection.RuntimeConstructorInfo.<get_Signature>g__LazyCreateSignature|19_0() at System.Reflection.RuntimeConstructorInfo.GetParametersNoCopy() at System.Reflection.RuntimeConstructorInfo.GetParameters() at Autofac.Core.Activators.Reflection.ConstructorBinder..ctor(ConstructorInfo constructorInfo) at Autofac.Core.Activators.Reflection.ReflectionActivator.ConfigurePipeline(IComponentRegistryServices componentRegistryServices, IResolvePipelineBuilder pipelineBuilder) at Autofac.Core.Registration.ComponentRegistration.BuildResolvePipeline(IComponentRegistryServices registryServices, IResolvePipelineBuilder pipelineBuilder) at Autofac.Core.Registration.ComponentRegistration.BuildResolvePipeline(IComponentRegistryServices registryServices) at Autofac.Core.Registration.ComponentRegistryBuilder.Build() at Autofac.ContainerBuilder.Build(ContainerBuildOptions options) at Volo.Abp.Autofac.AbpAutofacServiceProviderFactory.CreateServiceProvider(ContainerBuilder containerBuilder) at Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter`1.CreateServiceProvider(Object containerBuilder) at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider() at Microsoft.Extensions.Hosting.HostBuilder.Build() at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() at AppMicro.PublicWeb.Program.Main(String[] args) in D:\repos\AppMicro\apps\public-web\src\AppMicro.PublicWeb\Program.cs:line 28
Generate a new microservice solution with: abp new AppMicro -t microservice-pro -u blazor-server
start infrastructure with powershell ./up.ps1
tye run and check logs for Blazor and Public-web. Both contain same error :
Could not load type 'Volo.Abp.IAsyncInitialize' from assembly 'Volo.Abp.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null'.
Was it removed in 5.3 without updating the microservice template. or where is my mistake ?
I tried this on a new generated microservice-template..: Stepts to reproduce:
I receive this error:
Seems like the antifogery token is not set properly? i also checked permissions in gui and granted WebGateway_Swagger all permissions. No change.
What i am not getting here ~ ?
Hi,
i 'am trying to publish a microservice to kubernetes, but was not able to find any informations howto configure the helm charts for Blazor and correct domainnames.
To reproduce:
If i check the charts directory and the provided infos:
As far as i can see, it seems that you need to update these charts as soon as possible.
What i need from you is the complete etc\k8s Folder which would work for my solution (which you should generate like above).. Can you please provide that to me ?