Skip to content

Starting HttpApi.Host very slowly, taking more than 2 minutes #23349

@mansai

Description

@mansai

Is there an existing issue for this?

  • I have searched the existing issues

Description

During debugging, I found that the execution time for DynamicProxyGenAssembly2 is relatively long. How can I solve this issue?

The application layer contains a large amount of business code

`[ApiExplorerSettings(GroupName = nameof(ApiGroup.Common_v1))]
public class ClientDetailAppService : CrudAppService<ClientDetail, ClientDetailDto, long, PagedAndSortedResultRequestDto, CreateUpdateClientDetailDto, CreateUpdateClientDetailDto>

{
protected override string GetPolicyName { get; set; } = MESPermissions.ClientDetail.Default;
protected override string GetListPolicyName { get; set; } = MESPermissions.ClientDetail.Default;
protected override string CreatePolicyName { get; set; } = MESPermissions.ClientDetail.Create;
protected override string UpdatePolicyName { get; set; } = MESPermissions.ClientDetail.Update;
protected override string DeletePolicyName { get; set; } = MESPermissions.ClientDetail.Delete;
private readonly IClientDetailRepository _repository;
private readonly IStringLocalizer _localizer;
public ClientDetailAppService(IClientDetailRepository repository, IStringLocalizer localizer) : base(repository)
{
_repository = repository;
_localizer = localizer;
}
///


///
///

///
///
[Authorize(MESPermissions.ClientDetail.Default)]
public override Task<PagedResultDto> GetListAsync(PagedAndSortedResultRequestDto input)
{
return base.GetListAsync(input);
}
///
///
///

///
///
[Authorize(MESPermissions.ClientDetail.Default)]
public override Task GetAsync(long id)
{
return base.GetAsync(id);
}
///
///
///

///
///
[Authorize(MESPermissions.ClientDetail.Create)]
public override Task CreateAsync(CreateUpdateClientDetailDto input)
{
if (input.Id != 0)
{
throw Oops.Error("ClientDetail.Create.010", "创建操作不应携带数据主键Id信息");
}
// 检查代码及名称是否存在重复
if (_repository.FreeSql.Queryable().Any(item => item.ClientId == input.ClientId && item.ResourceId == input.ResourceId))
{
throw Oops.Error("ClientDetail.Create.020", "资源存在重复请检查后重新维护!");
}
return base.CreateAsync(input);

}
/// <summary>
/// 
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public async Task<List<ClientDetailDto>> CreateBulkAsync(List<CreateUpdateClientDetailDto> inputs)
{
    List<ClientDetailDto> clientDetailDtos = new List<ClientDetailDto>();

    foreach (var item in inputs)
    {
        var clientDetailDto = await CreateAsync(item);

        clientDetailDtos.Add(clientDetailDto);
    }

    return clientDetailDtos;
}
/// <summary>
/// 
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
[Authorize(MESPermissions.ClientDetail.Update)]
public override Task<ClientDetailDto> UpdateAsync(long id, CreateUpdateClientDetailDto input)
{

    if (!_repository.FreeSql.Queryable<ClientDetail>().Any(item => item.Id != input.Id))
    {
        throw Oops.Error("ClientDetail.Update.010", "Id 无效,请重新查询后重试!");
    }

    if (_repository.FreeSql.Queryable<ClientDetail>().Any(item => item.Id != input.Id && item.ClientId == input.ClientId && item.ResourceId == input.ResourceId))
    {
        throw Oops.Error("ClientDetail.Update.020", "资源维护重复请检查后重新维护!");
    }


    return base.UpdateAsync(id, input);

}
/// <summary>
/// Delete
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Authorize(MESPermissions.ClientDetail.Delete)]
public async override Task DeleteAsync(long id)
{
    await base.DeleteByIdAsync(id);
}
/// <summary>
/// Delete
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
[Authorize(MESPermissions.ClientDetail.Delete)]
public async override Task DeleteBulkAsync([FromBody] IEnumerable<long> ids)
{
    await base.DeleteBulkAsync(ids);
}

}`

Image

Reproduction Steps

No response

Expected behavior

No response

Actual behavior

No response

Regression?

No response

Known Workarounds

No response

Version

8.2.3

User Interface

Common (Default)

Database Provider

EF Core (Default)

Tiered or separate authentication server

None (Default)

Operation System

Windows (Default)

Other information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions