hi
Yes, Can you try?
hi
It is not supported by default, you can add new methods to implement it, you can check the corresponding documentation for details.
https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailmessage.attachments?view=net-5.0
http://www.mimekit.net/docs/html/Creating-Messages.htm
hi
The AuthenticationStateProvider
is service of Blazor Server not of abp.
https://github.com/dotnet/aspnetcore/blob/release/5.0/src/Components/Server/src/DependencyInjection/ComponentServiceCollectionExtensions.cs#L80
You can inject it directly instead of creating a subclass of it.
return await Task.Run(() => _activeUsers.Values.ToList());
Use return Task.FromResult(_activeUsers.Values.ToList());
insteadof Task.Run
hi
Are you enable WebSockets
of IIS?
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-5.0#iisiis-express-support
hi
You are call async method in sync method. Can be replace by AsyncHelper.RunSync
https://github.com/abpframework/abp/blob/48c52625f4c4df007f04d5ac6368b07411aa7521/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/AbpBackgroundWorkersModule.cs#L18
You can try to read the setting to see if it takes effect. https://docs.abp.io/en/abp/latest/Settings#setting-value-providers
https://github.com/abpframework/abp-samples/tree/master/EmailSendDemo
hi
Please check the commit of init2.
https://github.com/maliming/CATOSTest/commits/main
https://github.com/maliming/CATOSTest/invitations
hi
Can you try below:
[RemoteService(Name = FormsRemoteServiceConsts.RemoteServiceName)]
[Area("form")]
[ControllerName("Form")]
[Route("api/forms")]
[Authorize(FormsPermissions.Forms.Default)]
public class MyFormController : AbpControllerBase, IFormAppService
{
protected IFormAppService FormAppService { get; }
public MyFormController(IFormAppService formAppService)
{
FormAppService = formAppService;
LocalizationResource = typeof(FormsResource);
}
[HttpGet]
public virtual Task<PagedResultDto<FormDto>> GetListAsync(GetFormListInputDto input)
{
return FormAppService.GetListAsync(input);
}
[HttpGet]
[Route("{id}/responses")]
public Task<PagedResultDto<FormResponseDetailedDto>> GetResponsesAsync(Guid id, GetResponseListInputDto input)
{
return FormAppService.GetResponsesAsync(id, input);
}
[HttpGet]
[Route("{id}/download-responses-csv")]
public Task<IRemoteStreamContent> GetCsvResponsesAsync(Guid id, GetResponseListInputDto input)
{
return FormAppService.GetCsvResponsesAsync(id, input);
}
[HttpGet]
[Route("{id}/responses-count")]
public Task<long> GetResponsesCountAsync(Guid id)
{
return FormAppService.GetResponsesCountAsync(id);
}
[HttpDelete]
[Route("{id}/responses")]
public Task DeleteAllResponsesOfFormAsync(Guid id)
{
return FormAppService.DeleteAllResponsesOfFormAsync(id);
}
[HttpPost]
[Route("/invite")]
public Task SendInviteEmailAsync(FormInviteEmailInputDto input)
{
return FormAppService.SendInviteEmailAsync(input);
}
[HttpPost]
public virtual Task<FormDto> CreateAsync(CreateFormDto input)
{
return FormAppService.CreateAsync(input);
}
[AllowAnonymous]
[HttpGet]
[Route("{id}")]
public virtual Task<FormWithDetailsDto> GetAsync(Guid id)
{
return FormAppService.GetAsync(id);
}
[HttpPut]
[Route("{id}")]
public virtual Task<FormDto> UpdateAsync(Guid id, UpdateFormDto input)
{
return FormAppService.UpdateAsync(id, input);
}
[HttpPut]
[Route("{id}/settings")]
public virtual Task SetSettingsAsync(Guid id, UpdateFormSettingInputDto input)
{
return FormAppService.SetSettingsAsync(id, input);
}
[HttpGet]
[Route("{id}/settings")]
public virtual Task<FormSettingsDto> GetSettingsAsync(Guid id)
{
return FormAppService.GetSettingsAsync(id);
}
[AllowAnonymous]
[HttpGet]
[Route("{id}/questions")]
public virtual Task<List<QuestionDto>> GetQuestionsAsync(Guid id, GetQuestionListDto input)
{
return FormAppService.GetQuestionsAsync(id, input);
}
[HttpPost]
[Route("{id}/questions")]
public virtual Task<QuestionDto> CreateQuestionAsync(Guid id, CreateQuestionDto input)
{
return FormAppService.CreateQuestionAsync(id, input);
}
[HttpDelete]
[Route("{id}")]
public virtual Task DeleteAsync(Guid id)
{
return FormAppService.DeleteAsync(id);
}
}
public class MyServiceConvention : IApplicationModelConvention
{
public virtual void Apply(ApplicationModel application)
{
application.Controllers.RemoveAll(x => x.ControllerType == typeof(Volo.Forms.Forms.FormController));
}
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
Configure<MvcOptions>(mvcOptions =>
{
mvcOptions.Conventions.Add(new MyServiceConvention());
});
}
ActivatorChain = Odin.Countries.CountryController -> Odin.Countries.CountryAppService -> Odin.Users.AppUserLookupService -> Volo.Abp.Identity.IdentityUserRepositoryExternalUserLookupServiceProvider
The AppUserLookupService
depends on identity.
https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserRepositoryExternalUserLookupServiceProvider.cs#L14
hi
I have confirmed that this is a problem, I will fix it and share with you the solution.