Hi,
See https://support.abp.io/QA/Questions/102/Identity-Server-running-slow
Hi,
Maybe it has nothing to do with cross-domain, can you share the application logs? (blazor and host)
if I make the pages Angular-based instead - how am I supposed to inject them into existing hard-coded Dashboard layout?
Just an idea, you can output an html and redirect to the angular page in js:
internal sealed class AngularPage : PageBase
{
public const string Title = "AngularPage";
public const string PageRoute = "/AngularPage";
private static readonly string PageHtml;
static AngularPage()
{
PageHtml = "script window.location.href="angular page url" script";
}
public override void Execute()
{
WriteEmptyLine();
Layout = new LayoutPage(Title);
WriteLiteralLine(PageHtml);
WriteEmptyLine();
}
}
There is a lot of work to switch to angular, I think using Vue is a better way.
how am I supposed to interact with server-side extension code? In the given case, server-side part for Hangfire is based on IDashboardDispatcher, which mainly uses Dashboard context and the context is passed through RazorPage class - so all existing logic and even markup is built on server-side...
IDashboardDispatcher
has been exposed as an endpoint, you can send HTTP requests on the front end, just like RecurringJobAdmin does
At the same time, we don't want to create a new Hangfire dashboard - we just want to easily extend its features.
I suggest you continue to use Vue to extend the features, Vue is a progressive framework, you can even use it like jquery.
Hi,
You can change it according to your needs, for example, read a date from the settings.
Hi,
You can customize the implementation of IBlobNamingNormalizer
:
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IBlobNamingNormalizer))]
public class MyMinioBlobNamingNormalizer : MinioBlobNamingNormalizer
{
public override string NormalizeContainerName(string containerName)
{
containerName = base.NormalizeContainerName(containerName);
return containerName.Replace("{date}", DateTime.Now.ToShortDateString());
}
}
Your container:
[BlobContainerName("bucket-{date}")]
public class DayRollingContainer
{
}
Hi,
Now I know what you want.
You need to convert the RecurringJobAdmin
project into abp module. You can create an angular UI application module and install the module to your application.
Hi,
I think the problem related to your database.
How to reproduce the problem?
Hi,
For now, you can try:
public static class MyStringExtensions
{
public static string NormalizeReturnUrl(this string returnUrl, IUrlHelper url, string returnUrlHash)
{
returnUrl = NormalizeReturnUrl(returnUrl, url);
if (!returnUrlHash.IsNullOrWhiteSpace())
{
returnUrl = returnUrl + returnUrlHash;
}
return returnUrl;
}
private static string NormalizeReturnUrl(string returnUrl, IUrlHelper url)
{
if (returnUrl.IsNullOrEmpty())
{
return "~/";
}
if (url.IsLocalUrl(returnUrl) || returnUrl.StartsWith("your application url (eg. http://localhost:4200)"))
{
return returnUrl;
}
return "~/";
}
}
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(RegisterModel))]
public class MyRegisterModel : RegisterModel
{
protected override string GetRedirectUrl(string returnUrl, string returnUrlHash = null)
{
return returnUrl.NormalizeReturnUrl(Url, returnUrlHash);
}
}
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ResetPasswordConfirmationModel))]
public class MyResetPasswordConfirmationModel : ResetPasswordConfirmationModel
{
protected override string GetRedirectUrl(string returnUrl, string returnUrlHash = null)
{
return returnUrl.NormalizeReturnUrl(Url, returnUrlHash);
}
}
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ResetPasswordModel))]
public class MyResetPasswordModel : ResetPasswordModel
{
public MyResetPasswordModel(ITenantResolveResultAccessor tenantResolveResultAccessor) : base(tenantResolveResultAccessor)
{
}
protected override string GetRedirectUrl(string returnUrl, string returnUrlHash = null)
{
return returnUrl.NormalizeReturnUrl(Url, returnUrlHash);
}
public override async Task<IActionResult> OnPostAsync()
{
ValidateModel();
try
{
await AccountAppService.ResetPasswordAsync(
new ResetPasswordDto
{
UserId = UserId,
ResetToken = ResetToken,
Password = Password
}
);
}
catch (AbpIdentityResultException e)
{
if (!string.IsNullOrWhiteSpace(e.Message))
{
Alerts.Warning(e.Message);
return Page();
}
throw;
}
//TODO: Try to automatically login!
return RedirectToPage("./ResetPasswordConfirmation", new
{
returnUrl = GetRedirectUrl(ReturnUrl, ReturnUrlHash)
});
}
}
The problem has been solved. Because you changed the default page size.
Hi,
For blog module problem: https://github.com/abpframework/abp/issues/6473#issuecomment-738703428
We have written documentation for all commercial modules : ), and we will to improve the documentation of open source modules,they are already in the milestone. Thanks.
About payment module document, see: https://docs.abp.io/en/commercial/latest/modules/payment