The requested service 'Volo.Abp.Users.IUserRepository`1[[Test.Users.AppUser, Test.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' has not been registered
Can you resolve IUserRepository< AppUser> service in App Service?
Have you tried upgrading the Blazorise package? Then run abp bundle
again.
You can create a new project to check the package version.
hi
We will use netstandard as the target framework of the package as much as possible, but some services of net6 used in Volo.Abp.AspNetCore
cannot use netstandard. Contracts package does not have this case.
hi
You can search it on Google. Identity Server is also integrated in the default template.
https://www.codemag.com/Article/2105051/Implementing-JWT-Authentication-in-ASP.NET-Core-5
We will introduce it in the blog.
https://blog.abp.io/abp https://github.com/abpframework/abp/blob/dev/docs/en/Blog-Posts/2021-10-05%20v5_0_Beta1/POST.md
hi
The AbpUserTokens table has nothing to do with user login. It's represents an authentication token for a user.
Maybe you can check if tempkey.rsa
exists in your docker?
https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/tempkey.rsa
hi
The new MyFormController
.
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CsvHelper;
using CsvHelper.Configuration;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Forms;
using Volo.Forms.Forms;
using Volo.Forms.Localization;
using Volo.Forms.Permissions;
using Volo.Forms.Questions;
using Volo.Forms.Responses;
namespace test.formsurvey.Controllers
{
[RemoteService(Name = FormsRemoteServiceConsts.RemoteServiceName)]
[Area("form")]
[ControllerName("Form")]
[Route("api/forms")]
[Authorize(FormsPermissions.Forms.Default)]
public class MyFormController : AbpController, IFormApplicationService
{
protected IFormApplicationService FormApplicationService { get; }
public MyFormController(IFormApplicationService formApplicationService)
{
FormApplicationService = formApplicationService;
LocalizationResource = typeof(FormsResource);
}
[HttpGet]
public virtual Task<PagedResultDto<FormDto>> GetListAsync(GetFormListInputDto input)
{
return FormApplicationService.GetListAsync(input);
}
[HttpGet]
[Route("{id}/responses")]
public Task<PagedResultDto<FormResponseDetailedDto>> GetResponsesAsync(Guid id, GetResponseListInputDto input)
{
return FormApplicationService.GetResponsesAsync(id, input);
}
[HttpGet]
[Route("{id}/responses-count")]
public Task<long> GetResponsesCountAsync(Guid id)
{
return FormApplicationService.GetResponsesCountAsync(id);
}
[HttpDelete]
[Route("{id}/responses")]
public Task DeleteAllResponsesOfFormAsync(Guid id)
{
return FormApplicationService.DeleteAllResponsesOfFormAsync(id);
}
[HttpPost]
[Route("/invite")]
public Task SendInviteEmailAsync(FormInviteEmailInputDto input)
{
return FormApplicationService.SendInviteEmailAsync(input);
}
[HttpGet]
[Route("{id}/download-responses-csv")]
public async Task<IActionResult> ExportCsvAsync(Guid id, GetResponseListInputDto input)
{
var form = await FormApplicationService.GetAsync(id);
var questions = form.Questions.OrderBy(q => q.Index).ToList();
var responseList =
await FormApplicationService.GetResponsesAsync(id, new GetResponseListInputDto
{
Sorting = "id asc"
});
var headers = questions.Select(q => q.Title).ToList();
headers.AddFirst("Date");
var csvConfiguration = new CsvConfiguration(new CultureInfo(CultureInfo.CurrentUICulture.Name))
{
ShouldQuote = (field, context) => true
};
using (var memoryStream = new MemoryStream())
{
using (var streamWriter = new StreamWriter(stream: memoryStream, encoding: new UTF8Encoding(true)))
{
using (var csvWriter = new CsvWriter(streamWriter, csvConfiguration))
{
foreach (var header in headers)
{
csvWriter.WriteField(header);
}
foreach (var response in responseList.Items)
{
await csvWriter.NextRecordAsync();
var date = response.LastModificationTime ?? response.CreationTime;
csvWriter.WriteField(date.ToString("yyyy-MM-dd HH:mm:ss"));
foreach (var question in questions)
{
var questionResponse = response.Answers.FirstOrDefault(x => x.QuestionId == question.Id);
csvWriter.WriteField(questionResponse?.Value ?? string.Empty);
}
}
}
await memoryStream.FlushAsync();
var file = File(memoryStream.ToArray(), "text/csv",
$"{form.Title}.csv");
return file;
}
}
}
[HttpPost]
public virtual Task<FormDto> CreateAsync(CreateFormDto input)
{
return FormApplicationService.CreateAsync(input);
}
[AllowAnonymous]
[HttpGet]
[Route("{id}")]
public virtual Task<FormWithDetailsDto> GetAsync(Guid id)
{
return FormApplicationService.GetAsync(id);
}
[HttpPut]
[Route("{id}")]
public virtual Task<FormDto> UpdateAsync(Guid id, UpdateFormDto input)
{
return FormApplicationService.UpdateAsync(id, input);
}
[HttpPut]
[Route("{id}/settings")]
public virtual Task SetSettingsAsync(Guid id, UpdateFormSettingInputDto input)
{
return FormApplicationService.SetSettingsAsync(id, input);
}
[HttpGet]
[Route("{formId}/settings")]
public virtual Task<FormSettingsDto> GetSettingsAsync(Guid formId)
{
return FormApplicationService.GetSettingsAsync(formId);
}
[AllowAnonymous]
[HttpGet]
[Route("{id}/questions")]
public virtual Task<List<QuestionDto>> GetQuestionsAsync(Guid id, GetQuestionListDto input)
{
return FormApplicationService.GetQuestionsAsync(id, input);
}
[HttpPost]
[Route("{id}/questions")]
public virtual Task<QuestionDto> CreateQuestionAsync(Guid id, CreateQuestionDto input)
{
return FormApplicationService.CreateQuestionAsync(id, input);
}
[HttpDelete]
[Route("{id}")]
public virtual Task DeleteAsync(Guid id)
{
return FormApplicationService.DeleteAsync(id);
}
}
}
hi
Can you share your project with me? liming.ma@volosoft.com
We not block any ip but we will check this.
Can you try to remove protocolVersion
?