slaum
@slaum

Почему веб-приложение переходит в бесконечную загрузку?

Только начинаю изучать Asp.net MVC и пока еще полнейший дуб.
Суть такова, есть веб приложение: на странице поле ввода для текста и кнопка Сабмит.
При нажатии кнопки, происходит post-запрос. В результате в браузере показывается загрузка бесконечно и ничего не происходит. В контроллере происходит вот такая обработка:
OuterTrackAction outer = new OuterTrackAction();
var t = outer.GetJsonString(track.TrackString);
track.TrackJson = t.Result;
return Redirect("/TrackCheck/TrackCheck/@track");


Судя по брейкпоинтам, проблема возникает после того, как выполняется GetJsonString.
Код такой:
async public Task<string> GetJsonString(string no_)
        {
            no_ = ApiUrl + no_;
            var client = new HttpClient();
            var headers = client.DefaultRequestHeaders;
            headers.UserAgent.ParseAdd("ie");
            headers.UserAgent.ParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
            var response = await client.GetAsync(new Uri(no_));
            
            return(await response.Content.ReadAsAsync<string>());
        }


Объясните, почему я дурак?
  • Вопрос задан
  • 2330 просмотров
Пригласить эксперта
Ответы на вопрос 2
Neuroware
@Neuroware
Программист в свободное от работы время
для начала можно обернуть кода в try и посмотреть не будет ли там ошибки, которую можно в лог записать
Ответ написан
Комментировать
@MIsternik
Могу ошибаться, но дело возможно в том, что основной поток блокируется на t.Result и не может получить сигнал от потока выполняющего асинхронную операцию.

Попробуй заменить
var t = outer.GetJsonString(track.TrackString);
track.TrackJson = t.Result;

на var t = Task.Run(()=>outer.GetJsonString(track.TrackString)).Result;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы