diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProvider.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProvider.cs index d827b41101..fd1d20d905 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProvider.cs @@ -1,6 +1,7 @@ using System; using System.Net.Http; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; using Volo.Abp.Uow; @@ -9,6 +10,7 @@ namespace Volo.Abp.AspNetCore.Uow public class AspNetCoreUnitOfWorkTransactionBehaviourProvider : IUnitOfWorkTransactionBehaviourProvider, ISingletonDependency { private readonly IHttpContextAccessor _httpContextAccessor; + private readonly AspNetCoreUnitOfWorkTransactionBehaviourProviderOptions _options; public virtual bool? IsTransactional { @@ -20,10 +22,16 @@ namespace Volo.Abp.AspNetCore.Uow return null; } - //IdentityServer endpoint (TODO: Better to move to the IDS module) - if (httpContext.Request.Path.Value?.StartsWith("/connect/", StringComparison.OrdinalIgnoreCase) == true) + var currentUrl = httpContext.Request.Path.Value; + if (currentUrl != null) { - return false; + foreach (var url in _options.NonTransactionalUrls) + { + if (currentUrl.StartsWith(url, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } } return !string.Equals( @@ -33,9 +41,12 @@ namespace Volo.Abp.AspNetCore.Uow } } - public AspNetCoreUnitOfWorkTransactionBehaviourProvider(IHttpContextAccessor httpContextAccessor) + public AspNetCoreUnitOfWorkTransactionBehaviourProvider( + IHttpContextAccessor httpContextAccessor, + IOptions options) { _httpContextAccessor = httpContextAccessor; + _options = options.Value; } } } diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProviderOptions.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProviderOptions.cs new file mode 100644 index 0000000000..dd612a008d --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProviderOptions.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace Volo.Abp.AspNetCore.Uow +{ + public class AspNetCoreUnitOfWorkTransactionBehaviourProviderOptions + { + public List NonTransactionalUrls { get; } + + public AspNetCoreUnitOfWorkTransactionBehaviourProviderOptions() + { + NonTransactionalUrls = new List + { + "/connect/" + }; + } + } +}