Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.
If you're creating a bug/problem report, please include followings:
I developed a new project in Abp and ran it on our test servers. However, when I deployed it to production environments, I started encountering this error. I have checked all the URLs related to OpenIdDict, but couldn't find any issues. Why do you think I am getting this error? (I have checked the DNS, and there doesn't seem to be a problem there either)
2023-08-25 11:42:44.908 +03:00 [ERR] Connection id "0HMT58T053R06", Request id "0HMT58T053R06:00000001": An unhandled exception was thrown by the application.
System.UriFormatException: Invalid URI: The hostname could not be parsed.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)
at System.Uri..ctor(String uriString, UriKind uriKind)
at OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers.ResolveRequestUri.HandleAsync(ProcessRequestContext context)
at OpenIddict.Validation.OpenIddictValidationDispatcher.DispatchAsync[TContext](TContext context)
at OpenIddict.Validation.OpenIddictValidationDispatcher.DispatchAsync[TContext](TContext context)
at OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandler.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Volo.Abp.AspNetCore.Security.AbpSecurityHeadersMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|8_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.HandleException(HttpContext context, ExceptionDispatchInfo edi)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|8_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.RequestLocalization.AbpRequestLocalizationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
Hi,
Even though await uow.CompleteAsync(); is being called, it is not performing any operation. In this case, I would expect it to write(commit) to the database or throw an error.
I am debugging the code below. When I check the database after executing the CompleteAsync() command, I observe that there is no change. The change only occurs when the method is completed. Don't you think this is misleading?
public async Task UpdateAsync(string name)
{
List<string> myList = new() { "1", "2" };
foreach (var id in myList)
{
using (var uow = unitOfWorkManager.Begin(isTransactional: true))
{
var product = await productRepository.GetAsync(id);
product.SetName(name);
await productRepository.UpdateAsync(product);
await uow.CompleteAsync();
}
}
}
[15:38:28 INF] Started database migrations...
[15:38:28 INF] Migrating schema for host database...
[15:38:29 ERR] ABP-LIC-0016 - You are not granted permission to use the module 'Volo.Abp.OpenIddict.Pro.EntityFrameworkCore-v7.1.1.0'.
[15:38:37 INF] Executing host database seed...
[15:38:49 INF] Successfully completed host database migrations.
[15:38:49 INF] Successfully completed all database migrations.
[15:38:49 INF] You can safely end this process...
Actually my database has been created.Is this error a fatal error?
Hi @maliming ,
Have you considered using the in-memory database in the .net core framework instead of sqllite? If so, why didn't you choose it?
when the await uow.CompleteAsync(); runs I observe that there is a change in the database
public virtual async Task UpdateNameAsync(Guid id)
{
using var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);
var book = await _bookRepository.GetAsync(id);
book.Name = DateTime.Now.ToString();
await uow.SaveChangesAsync();
await uow.CompleteAsync();
throw new Exception("an occured exception")
}
but when the await uow.CompleteAsync(); runs in the code below, there is no change in the database. Surrounding unit of work manages book entity (instead of new uow)
public virtual async Task UpdateNameAsync(Guid id)
{
var book = await _bookRepository.GetAsync(id);
using var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);
book.Name = DateTime.Now.ToString();
await uow.SaveChangesAsync();
await uow.CompleteAsync();
throw new Exception("an occured exception")
}
My original code similar like below. I want database changes to commit even though Exception is thrown.
public virtual async Task UpdateNameAsync(Guid id)
{
var book = await _bookRepository.GetAsync(id);
await UpdateNameFunctionAsync(book);
}
private async Task UpdateNameFunctionAsync(Book book)
{
var uow = unitOfWorkManager.Begin(requiresNew: true, isTransactional: true);
book.Name = DateTime.Now.ToString();
await uow.SaveChangesAsync();
await uow.CompleteAsync();
throw new Exception("an occured exception");
}
Would you consider this a bug?
Hi, I need to call a remote service in a bg-job,How can I do that?
could you give more detail. thanks.
but we don't recommend you to do this
It worked successfully when RemoteService(IsEnabled = true) . Thanks.
Well,can't proxy classes be used in domain layer? For example I would like to use it in a manager class. I know that I need to move these classes(contracts and interfaces) to the domain in order to use them in the domain layer.
My fault. builder.ConfigureSaas() method was being wrongly called at FirstEfCoreEntityExtensionMappings.cs. I noticed while trying to reproduce the steps. Many thank.