Проблема с отображением данных из таблицы aspnetusers в опубликованном приложении blazor wasm

#azure-web-app-service #azure-sql-database #asp.net-identity #blazor-webassembly

Вопрос:

У меня есть приложение blazor wasm, написанное в net 5
, Приложение, развернутое в azure на виртуальной машине Windows с базой данных mssql
, Локально запущенное приложение со строкой подключения к базе данных в azure, показывает все данные из базы данных, правильно
опубликованное приложение не отображает данные, связанные с IdentityUser

  public class AppUser : IdentityUser
{
    public string DisplayName { get; set; }
    public string Image { get; set; }

    // relationship
    public Nationality Nationality { get; set; }

}
 

данные из полей отображают имя, изображение отображается правильно, но другие поля не отображаются
если я выполняю вызов api к своему контроллеру, я вижу все поля в формате json

  public UserController(UserManager<AppUser> userManager)
    {
        _userManager = userManager;
    }


    [HttpGet("all")]
    public async Task<ActionResult<AppUser[]>> All() =>
        await _userManager.Users.ToArrayAsync();
 

и это мое мнение в блейзоре

     <MudTable Items="@appUsers" Hover="true" Class="my-5">
    <RowTemplate>
    <MudTd> 
        <img class="img-thumbnail" src="@context.Image" style="min-height:100px;height:100px;" />
    </MudTd>
    <MudTd>@context.DisplayName</MudTd>
    <MudTd>@context.UserName</MudTd>
    <MudTd>@context.Email</MudTd>       
    </RowTemplate>
   </MudTable>
   @code {
         private List<AppUser> appUsers = new List<AppUser>();

         protected override async Task OnInitializedAsync()
         {
            appUsers = await httpClient.GetFromJsonAsync<List<AppUser>>("api/user/all");
          }
   }
 

Startup.cs

             services.AddIdentity<AppUser, IdentityRole>(o => o.Password.RequireNonAlphanumeric = false)
            .AddEntityFrameworkStores<AppDbContext>();
 

AppDbContext.cs

  public class AppDbContext : IdentityDbContext<AppUser>
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    public DbSet<Nationality> Nationalities { get; set; }
 

Ответ №1:

В вашем вызове api Национальность изображения равна нулю. Я настраиваю метод API для нетерпеливой загрузки Nationality .

 await _userManager.Users.Include(u => u.Nationality).ToArrayAsync();
 

Я бы также временно включил ведение журнала, чтобы убедиться, что запросы выполняются должным образом.

Комментарии:

1. Спасибо вам за ваш ответ. Решение, которое помогло мне, состояло в том, чтобы создать класс POCO и поместить в него выборку из базы данных