#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 и поместить в него выборку из базы данных