Base solution for your next web application

Activities of "smry"

I wanted to comment because I recently ran into this issue

When you update the installed Node, Angular, and Angular CLI software on your computer you can gain better processing and bundling

As far as sizes are concerned if you already updated Node/Angular, when you build in production mode your files should be optimized

If you are seeing that there is large file sizes loading to the browser which is causing performance issues, look into compression.

If you're on IIS: https://docs.microsoft.com/en-us/iis/extensions/iis-compression/iis-compression-overview

@sagaracorp

Are you running on IIS? If so you can set your API so that it never has downtime and then the application should always "Be Fast" on any attempt What we've seen is the default settings set the API to sleep and then the first person to hit the page will have to wait until everything is online

https://forums.asp.net/t/1950241.aspx?ASP+NET+MVC+website+goes+to+sleep+How+to+nake+it+always+awake+

Internal Dev issue, accidental log-off method triggered mid processing which cleared AbpUserTokens access token

  • What is your product version? 9.1.0
  • What is your product type (Angular or MVC)? Angular
  • What is product framework type (.net framework or .net core)? .NET Core

We do not have a way of replicating event to get the application into a failed state, but currently the application access all methods except one The errors we get are listed below: pNetCore.Cors.Infrastructure.CorsService - Request origin https://tenant1.mysite.com:12345 does not have permission to access the resource.

Mvc.Authorization.AbpAuthorizationFilter - Abp.Authorization.AbpAuthorizationException: Current user did not login to the application!
   at Abp.Authorization.AuthorizationHelper.AuthorizeAsync(IEnumerable`1 authorizeAttributes)
   at Abp.Authorization.AuthorizationHelper.CheckPermissionsAsync(MethodInfo methodInfo, Type type)
   at Abp.Authorization.AuthorizationHelper.AuthorizeAsync(MethodInfo methodInfo, Type type)
   at Abp.AspNetCore.Mvc.Authorization.AbpAuthorizationFilter.OnAuthorizationAsync(AuthorizationFilterContext context)
Abp.Authorization.AbpAuthorizationException: Current user did not login to the application!
   at Abp.Authorization.AuthorizationHelper.AuthorizeAsync(IEnumerable`1 authorizeAttributes)
   at Abp.Authorization.AuthorizationHelper.CheckPermissionsAsync(MethodInfo methodInfo, Type type)
   at Abp.Authorization.AuthorizationHelper.AuthorizeAsync(MethodInfo methodInfo, Type type)

What do we have to do to reset all connections? I found and cleared the AbpUserTokens table and based on comments from https://github.com/aspnetzero/aspnet-zero-core/issues/3368 - since it sounds like Tokens are cleared out after they expire anyway.

If I wanted to clear out all cache from the application, what tables and actions should we take?

Here is the code but I'm not sure how helpful it will be, its generally the same concept you have

html:

<div [busyIf]="!ContentLoaded">
    <span>
       <app-mycomponent></app-mycomponent>
    </span>
</div>

ts:

  ContentLoaded = false;


    constructor(
        injector: Injector,
    ) {
        super(injector);
    }

    ngOnInit(): void {
    }

    myLoadingMethod($event) {
        this.ContentLoaded = $event;
    }
}

that component was a visual div in tab on a modal

<tab heading="{{'Content' | localize}}">
          <div class="tab-class" *ngIf="active">
          <content-loaded-area></content-loaded-area>
        </div>
    </tab>

The code you have should spin the div. From what you are describing its treating the whole area as the div. I would try cutting the entire area in 4 and add loading to just 1 to see how it reacts and maybe it will show you why its not reacting correctly Maybe even try adding a solid border around your div and seeing if its going past the area you expect it to be in


<div [busyIf]="loading">
                        <div class="row align-items-center" *ngIf="excelData">
                            <dx-tree-list id="excelData" class="excelData" [dataSource]="excelData.Children"
                                itemsExpr="Children" dataStructure="tree" [showRowLines]="true" [showBorders]="true"
                                [allowColumnResizing]="true" [columnMinWidth]="100" [columnAutoWidth]="true"
                                (onRowPrepared)="onRowUpdated($event)" (onCellPrepared)="onCellPrepared($event)"
                                (onRowExpanding)="onRowExpanding($event)" (onRowCollapsing)="onRowCollapsing($event)"
                                [customizeColumns]="customizeColumns">
                                <dxo-sorting mode="none">
                                </dxo-sorting>
                                <dxi-column dataField="Name" caption="reportName" [width]="400">
                                </dxi-column>
                                <dxi-column dataField="GLCode" caption="GLCode">
                                </dxi-column>
                            </dx-tree-list>
                        </div>
</div>
<div class="div-green">box 2</div>
<div class="div-red">box 3</div>
<div class="div-blue">box 4</div>


........
div-green {
  background-color: lightgrey;
  width: 300px;
  border: 15px solid green;
  padding: 50px;
  margin: 20px;
}
div-red {
  background-color: lightgrey;
  width: 300px;
  border: 15px solid red;
  padding: 50px;
  margin: 20px;
}
div-blue {
  background-color: lightgrey;
  width: 300px;
  border: 15px solid blue;
  padding: 50px;
  margin: 20px;
}

Can you try to reverse that order?

Like this:

<div class="row align-items-center" *ngIf="excelData">    
        <div [busyIf]="loading">
                            <dx-tree-list id="excelData" class="excelData" [dataSource]="excelData.Children"
                            ...

Also, I think the busy-if.directive.ts takes care of the spinnerService show/hide, I didnt need to add it to any of my custom components to get the loading spinner - I only used [busyIf]

[busyIf] works exactly how you are describing it, add it to a div and add a state bool to trigger on/off/finished-loading-data

In the ASPNETZero source code I believe all the tables and dashboard widgets have code you can try to replicate

I would recommend trying to put a very clearly defined div inside of a div container and checking your process again to see if it triggers the whole page again - or trying to copy the code from a widget and seeing if that helps identify the issue

https://docs.aspnetzero.com/en/aspnet-core-angular/latest/Deployment-Angular-Publish-IIS

  • What is your product version? 9.0.1
  • What is your product type (Angular or MVC)? Angular
  • What is product framework type (.net framework or .net core)? .NET Core

We logged into a specific tenant with swaggerUI and we noticed we were able to access certain information from (TenantId) from another tenant knowing the tenants name For the specific example we found it was the very first method: /api/services/app/Account/IsTenantAvailable, using a known tenant the API was able to return state, TenantId, and server address

We were also able to query how many tenants were active on specific editions so a user could gain access to internal information

Has there been an audit conducted to identify how many tenant-to-tenant identifiable information concerns there may be? I was able to see penetration testing on the FAQ section, but that was geared more towards external/server access and not to items like tenant metadata being exposed

When you click the button, what does the network show and what does the local log show? Log location should be: \src\myCompany.Web.Host\App_Data\Logs{here}

Showing 11 to 20 of 83 entries