Я звоню Http.JsonAsync<MyType>("api/MyController/Users");
, который очень быстро возвращается, но затем переходит в 5 секунд, а не дает мне данные.
Я сделал другие такие звонки, которые работали нормально, но происходит что-то странное.
Я начал со стандартного шаблона службы Blazor службы погоды и все работало нормально
Я стартую с кнопки события
<button onclick=@load_click>LOAD!</button>
@functions {
private void load_click()
{
try
{
Logger.Log($"about to call PopulateExistingUsers");
var taskUsers = Http.GetJsonAsync<UsersPageData>("api/ShowerQ/Users");
Logger.Log($"returned from async requesting users");
if (!taskUsers.Wait(5000))
{
throw new Exception($"timeout!");
}
var users = taskUsers.Result;
Logger.Log($"populated existing users ok. Users.Count = {users.Users.Count()}");
}
catch (Exception e)
{
Logger.Log(e.ToString());
}
}
Код контроллера на стороне сервера:
[HttpGet("Users")]
public UsersPageData GetUsers()
{
try
{
var users = _repos.GetAllUsers().ToList();
Log($"returned from GetALlUsers() with {users.Count} users");
return new UsersPageData() {Users = users};
}
finally
{
Log($"aft6er returning from method {nameof(GetUsers)}");
}
}
Logger.Log
просто делает Console.Writeline
, что идет в консоль браузера - очень удобно!
Ожидаемое:
вывод журнала в консоль:
"Заполнены существующие пользователи в порядке. Users.Count = 3"
Актуальные журналы:
Вывод, который я получаю:
WASM: 09:31:26.49:about to call PopulateExistingUsers
WASM: 09:31:26.56:returned from async requesting users
WASM: 09:31:31.57:System.Exception: timeout!
WASM: at ShowerQWeb2.Client.Pages.Index.load_click () [0x00048] in C:\Users\XXXX\Source\repos\ShowerQWeb2\ShowerQWeb2.Client\Pages\Index.razor:62
и на стороне сервера (который работает на той же машине, поэтому часы синхронизируются не считая часа)
10:31:26.68:returned from GetALlUsers() with 3 users
10:31:26.68:aft6er returning from method GetUsers
Отладка сети Chrome показывает, что возвращается:
заголовок ответа:
Date: Mon, 13 May 2019 09:31:26 GMT
{"users":[{"id":1,"name":"David XX"},{"id":2,"name":"Sumith YY"},{"id":3,"name":"David ZZ"}]}
Итак, похоже, что его застревание десериализовало?