I will check it.
Hi,
You can try:
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseSentry();
builder.Host
.AddAppSettingsSecretsJson()
.UseAutofac()
.UseSerilog();
await builder.AddApplicationAsync<MyProjectNameWebPublicModule>();
var app = builder.Build();
app.UseSentryTracing();
await app.InitializeApplicationAsync();
await app.RunAsync();
return 0;
Could you share the error logs? thanks.
Hi,
Please update the config:
export const configuration = {
client_id: 'myReact_APP',
redirect_uri: window.location.origin + '/#/authentication/callback',
silent_redirect_uri: window.location.origin + '/#/authentication/silent-callback',
scope: 'openid profile email api offline_access myReact',
authority: 'https://localhost:44308',
refresh_time_before_tokens_expiration_in_second: 40,
service_worker_relative_url:'/OidcServiceWorker.js',
service_worker_only: false,
// monitor_session: true,
};
myReact_APP
You need create a client application named myReact_APP
redirect_uri: window.location.origin + '/#/authentication/callback', Here assume
window.location.originishttp://localhost:4200
Hi,
Abp Angular Team will answer you
Hi,
This is a known issue, we fixed it in the patch version.
Your ticket refunded.
You can check this: https://support.abp.io/QA/Questions/5186/What-wrong-with-my-menu-construction-May-ABP-framework-throw-detail-exception-for-us-to-debug
the biggest problem is the initial page/login page load time is too long (30 seconds in my development environment).
Maybe there are some problems with your project. After our test, it usually takes 5-10 seconds.
Is there is a plan to support blazor united, which is a hope to improve the initial loading time.
Yes, we will try to support Blazor united
Hi,
This is the design of Blazor: https://learn.microsoft.com/en-us/dotnet/core/compatibility/aspnet-core/5.0/blazor-static-web-assets-validation-logic-updated
You can try this:
wwwroot/scripts/leptonx-blazor-compatibility.js
window.afterLeptonXInitialization = function () {
var isRtl = JSON.parse(localStorage.getItem("Abp.IsRtl"));
var direction = isRtl ? "rtl" : "ltr";
replaceStyleWith(
createStyleUrl('layout-bundle', direction),
`lpx-layout-bundle-style-${direction}`,
`lpx-layout-bundle-style-${direction === 'rtl' ? 'ltr' : 'rtl'}`
);
replaceStyleWith(
createStyleUrl('abp-bundle', direction),
`lpx-abp-bundle-style-${direction}`,
`lpx-abp-bundle-style-${direction === 'rtl' ? 'ltr' : 'rtl'}`
);
replaceStyleWith(
createStyleUrl('blazor-bundle', direction),
`lpx-blazor-bundle-style-${direction}`,
`lpx-blazor-bundle-style-${direction === 'rtl' ? 'ltr' : 'rtl'}`
);
replaceStyleWith(
createStyleUrl('font-bundle', direction),
`lpx-font-bundle-style-${direction}`,
`lpx-font-bundle-style-${direction === 'rtl' ? 'ltr' : 'rtl'}`
);
function createStyleUrl(theme, direction = 'ltr') {
const styleName = direction === 'rtl' ? `${theme}.rtl` : theme;
return `${window.currentLayout}/css/${styleName}.css`
}
function createId(theme, type) {
return theme && `lpx-theme-${type}-${theme}`;
}
function replaceStyleWith(path, id, previousId) {
const link = document.createElement('link');
link.href = path;
link.type = 'text/css';
link.rel = 'stylesheet';
link.id = id;
const prevElem = document.querySelector(`#${previousId}`);
document.getElementsByTagName('head')[0].appendChild(link);
if (previousId) {
prevElem?.remove();
}
return link;
}
function loadThemeCSS(key, theme, themeOld, cssPrefix, direction = 'ltr') {
const themeId = createId(theme, key);
const previousThemeId = createId(themeOld, key);
replaceStyleWith(createStyleUrl(cssPrefix + theme, direction), themeId, previousThemeId);
}
};
(function () {
(function(history){
var pushState = history.pushState;
history.pushState = function(state) {
if (typeof history.onpushstate == "function") {
history.onpushstate({state: state});
}
setTimeout(function(){
var scrollBar = leptonx.init.perfectScrollbarInstances[0];
if(scrollBar)
{
scrollBar.element.scrollTop = 0;
}
leptonx.mobileNavbar.closeMenu();
}, 100);
return pushState.apply(history, arguments);
};
})(window.history);
function isAlreadyLoaded(id) {
return document.querySelector(`link[id^="lpx-theme-${id}-"]`)?.id;
}
function loadThemeCSS(key, event, cssPrefix) {
const newThemeId = createId(event.detail.theme, key);
const previousThemeId = createId(event.detail.previousTheme, key);
const loadedCSS = isAlreadyLoaded(key);
if (newThemeId !== loadedCSS) {
leptonx.replaceStyleWith(
createStyleUrl(cssPrefix + event.detail.theme),
newThemeId,
previousThemeId || loadedCSS
);
}
}
function createId(theme, type) {
return theme && `lpx-theme-${type}-${theme}`;
}
window.initLeptonX = function (layout = currentLayout, defaultStyle = "dim") {
window.currentLayout = layout;
leptonx.globalConfig.defaultSettings =
{
appearance: defaultStyle,
containerWidth: 'full',
};
leptonx.CSSLoadEvent.on(event => {
loadThemeCSS('bootstrap', event, 'bootstrap-');
loadThemeCSS('color', event, '');
});
leptonx.init.run();
}
const oldAfterLeptonXInitialization = window.afterLeptonXInitialization;
window.afterLeptonXInitialization = function () {
if(oldAfterLeptonXInitialization){
oldAfterLeptonXInitialization();
}
}
function createStyleUrl(theme, type) {
if (isRtl()) {
theme = theme + '.rtl';
}
if (type) {
return `${window.currentLayout}/css/${type}-${theme}.css`
}
return `${window.currentLayout}/css/${theme}.css`;
}
function isRtl() {
return document.documentElement.getAttribute('dir') === 'rtl';
}
})();
public class MyScriptContributor : BundleContributor
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.RemoveAll(x => x.Contains("leptonx-blazor-compatibility.js"));
context.Files.Add("/scripts/leptonx-blazor-compatibility.js");
}
}
options.ScriptBundles.Configure(
BlazorLeptonXThemeBundles.Scripts.Global,
bundle =>
{
bundle.AddContributors(new MyScriptContributor());
}
);
Copy all CSS to your project.
Now, it's working