Activities of "alexandru-bagu"

Version 3.0.3 - issue with multi tenant setup on a new project with complex solution name (Abc.CoolProject). Here's the fixes to your templates.

Template: Server.AppService.AppService.txt

        public virtual async Task<%%entity-name%%Dto> CreateAsync(%%entity-name%%CreateDto input)
            ...
			%%<if:IMultiTenantEntity>%%new%%entity-name%%.TenantId = CurrentTenant.Id;%%</if:IMultiTenantEntity>%%
            //                                       ^ there newWaldo is
            ...
        

Solution

        public virtual async Task<%%entity-name%%Dto> CreateAsync(%%entity-name%%CreateDto input)
            ...
			%%<if:IMultiTenantEntity>%%%%entity-name-camelcase%%.TenantId = CurrentTenant.Id;%%</if:IMultiTenantEntity>%%
            //                                              ^ there waldo is
            ...
        

Create an object Waldo. Find Waldo. Wait you can't, dotnet build says. There's no "newWaldo" declared in this scope. Hmm, I wonder where that "new" came from.

Template: Frontend.Mvc.Page.CreateModal.cshtml.txt

@page
@using Microsoft.AspNetCore.Mvc.Localization
@using %%only-project-name%%.Localization
//.        ^ complex solution name you say? we don't care about that. here, take only the project name because that will surely be enough.
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
...

Solution

@page
@using Microsoft.AspNetCore.Mvc.Localization
@using %%solution-namespace%%.Localization
//.        ^ complex solution name you say. cool, here's the whole identifier
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
...

Template: Frontend.Mvc.Page.EditModal.cshtml.txt

@page
@using Microsoft.AspNetCore.Mvc.Localization
@using %%only-project-name%%.Localization
//.        ^ complex solution name you say? we don't care about that. here, take only the project name because that will surely be enough.
@using %%project-name%%.Web.Pages.%%entity-name-plural%%
...

Solution

@page
@using Microsoft.AspNetCore.Mvc.Localization
@using %%solution-namespace%%.Localization
//.        ^ complex solution name you say. cool, here's the whole identifier
@using %%project-name%%.Web.Pages.%%entity-name-plural%%
...

Template: Frontend.Mvc.Page.Index.cshtml.txt

...
@using Microsoft.AspNetCore.Mvc.Localization
@using %%only-project-name%%.Localization
//.        ^ complex solution name you say? we don't care about that. here, take only the project name because that will surely be enough.
@inject IHtmlLocalizer<%%only-project-name%%Resource> L
...

Solution

...
@using Microsoft.AspNetCore.Mvc.Localization
@using %%solution-namespace%%.Localization
//.        ^ complex solution name you say. cool, here's the whole identifier
@inject IHtmlLocalizer<%%only-project-name%%Resource> L
...

How about the fact that my connection string is not used for any new project I create? I always end up with "Server=localhost;Database=<ProjectName>;Trusted_Connection=True;MultipleActiveResultSets=true". How about that? Should I fix that for you as well? Why should I have to change the templates myself when the we already paid a price product that is supposed to be ready for this task. Do you even test your software before you release it?

Do you consider it fair that I am supposed to waste one of my questions that was included in the support package to report bugs? To fix your bugs even? What is this support meant to include? Is it not meant to be a channel through which developers can ask for your advice as to how to implement/integrate your product? How is me being required to spend one of such question to report YOUR bugs accomplishing me integrating your product with whatever software I am meant to develop?

While ABP support seems to slack off, check my question. https://support.abp.io/QA/Questions/291/Are-we-supposed-to-fix-your-bugs-in-your-software-that-we-paid-for-Is-this-a-joke It is the fix for your problem, or at least for @mattjoslin's.

@sean.alford - While that is a solution, to not spend questions, why is there no "Report a bug" link anywhere? It would just have to forward people to the thread you said, nothing more. However everyone is left questioning whether there's even a point to reporting anything if there is no designated, clear channel for it. My first thought was that we should simply refund the purchase, there are other products available.

"The team is usually very quick to respond to issues." - It took them 7 days to release 3.0.4 and I have no clue if they fixed the issue I opened with this thread - no answers from them. Was I supposed to wait around 7 days for them to release a fix?

The aggressive schedule you are speaking of is not one that the comunity demanded, maybe only suggested. If they don't have the time to implement new features and also keep the product working correctly then they bit off more than they can chew, so to speak. For my first project using this product I had a broken product with no clear instructions as to how to select a specific version that I know previously worked. Same thing happened when I updated the CLI to 3.0.4 - generating views no longer worked, I had to update the projects then rebuild then try to generate views and it finally worked. Why is there no "upgrade" command to do all that so you don't have to guess what is going on? Apparently my project is of version 3.0.3 but upgraded to 3.0.4 libs - what is that supposed to mean?

What about disabling tenancy for queries, one could ask as I have. The API changed yet there is no documentation about it. If the IgnoreMultiTenancy attribute was supposed to do the job, it didn't. I had to deobfuscate their libraries and skim through their classes to find IsMultiTenantFilterEnabled in the AbpDbContext without any documentation as to how to change the value. I did appreciate it was a virtual field so I could easily override it.

Their software is nice, I am not saying it is not. But the price tag should mean there is a consumer first strategy, we're not talking about a small amount. Or maybe $2k is pocket change - certainly to some, but not to everyone.

The connection string issue is actually not because of code generation but because of a UI bug. I was just not paying enough attention although I am sure I am not the only one who faced this issue. The issue is when you click the Tiered checkbox first time - it resets the connection string. Why would it reset the connection string when it is after the text box for connection string is what I am wondering. https://www.youtube.com/watch?v=A8UTMm9VRhg&feature=youtu.be

"if a user reports bug in a question, we refund the credit for that question." - unwritten rule? The reason I was upset about this thing was that there were no such indication anywhere. Maybe add some text relaying this information in the view for posting a new issue and maybe even prompt people to post the bugs in the pinned topic.

I do wonder, if I were to post questions about how to do stuff that are undocumented along with their solution, would my question be refunded? Would you not want the community to contribute and make your support life better? The lack of documentation or the existing documentation being so unclear is annoying to say the least.

https://prnt.sc/tzegb2

I have been having this issue for the past two weeks. Are we not supposed to be able to download the sources?

Thanks, I hadn't thought of checking that but it makes sense. It might have been helpful to specify a reason for not being able to download the source code instead of a generic 403.

Why is there no solution offered for this? Is there actually no one else needing raw access to streams? Am I the only one who has to consider possibly uploading files worth of gigabytes?

Issues I encountered so far:

  1. There is no way to send a stream straight over a proxied interface. As far as I can tell one would only have to modify Volo.Abp.Http.Client.DynamicProxying.RequestPayloadBuilder::BuildContent to generate a proper StreamContent for streams. I don't actually see a reason why you simply ignore streams all together from being sent over the proxied httpclient.
  2. What if I want to download a large blob without converting it to a dto, but actually getting it raw as you're meant to work with blobs? My current only solution is to replicate what you do for the proxied http client and call the api myself and handle the http response message (and content) as I see fit.
  3. Why is System.IO.AbpStreamExtensions::CopyToAsync changing the stream by setting Position = 0? In the real world we don't work only with MemoryStream and even if we did, that extension which is used EVERYWHERE, because I guess Stream.CopyToAsync was not good enough, would mess things up if you did not want to include the whole stream.
  4. Why the duck do you guys love so much MemoryStreams and not use proper dotnet apis? Why when I request a stream for a blob backed by Volo.Abp.BlobStoring.FileSystem you guys read the whole file in a MemoryStream then return it, much wow here - not setting it's position to 0. Like... why??!? So if I want to store blobs that are huge (up to 1gb) I must also have the ram to load it in the memory when I don't even need that. All I should do is give the FileStream to the MVC controller and it knows all by it's widdle self how to manage it.

Please add support for streams and either undo what you did with that extension "CopyToAsync" or make it a service so we can replace it so it works as it should.

Nothing prevents me to create a new controller, that is true but there is no support/documentation for how to authenticate a http client to be able to use the authorization policies already in place.

Totally unhelpful.

https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Http/CliHttpClient.cs does not have any authentication provided to it.

The code for the FileDescriptorController uses IFormFile which is buffered according to MSDN. More over, based on default settings for IIS, buffered requests cannot go past 30 MB.

Say what now? So I should waste all of my server's memory just because "application services shouldn't use IFormFile or Stream"? I agree that IFormFile should only be in the api controller but stream? What you are probably trying to say is that because most of the time application services interfaces are accessed using proxies one must use byte[] because Stream is not serializable. However that does not show that the proper way to handle this kind of work is using byte[], That just shows that you don't have any proper support for streams.

As this conversation continues it seems I need to clarify some things. I already have full support of streams done in my code, that is not the point of this thread. My question is whether any proper support for streaming will be included in ABP and whether there will be any documentation on how to authenticate an HttpClient inside a scope that already has application services proxies working.

At the moment there is no proper way to do any of this other than avoiding app service proxies and digging through abp framework's code to see what one has to copy from there to actually be able to create his own HttpClient and authenticate it to be able to do custom requests.

Showing 1 to 10 of 12 entries
Made with ❤️ on ABP v8.2.0-preview Updated on March 25, 2024, 15:11