не удается вызвать службу веб-API с помощью клиента http, развернуть его под виртуальным приложением в службе приложений Azure - PullRequest
0 голосов
/ 12 октября 2018

Я развернул веб-приложение MVC в службе приложений Azure.В сервисе приложений я добавил приложение Web API, используя опцию virtual application, доступную в разделе «Настройки приложения» на Azure.Теперь я вызываю этот сервис веб-API из веб-приложения MVC с помощью HTTP-клиента, он выдает сообщение об ошибке ниже, но я могу вызвать этот сервис веб-API с помощью браузера.

Внутреннее исключение:

System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка.---> System.Net.WebException: основное соединение было закрыто: при отправке произошла непредвиденная ошибка.---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом в System.Net.Sockets.Socket.EndReceive (IAsyncResult asyncResult) в System.Net.Sockets.NetworkStream.EndRead (IAsyncResult asyncResult)--- Конец внутренней трассировки стека исключений --- в System.Net.TlsStream.EndWrite (IAsyncResult asyncResult) в System.Net.PooledStream.EndWrite (IAsyncResult asyncResult) в System.Net.ConnectStream.WriteHeadersCallback (IAsyncResult ar) -- Конец внутренней трассировки стека исключений --- в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) в System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) --- Конец внутренней трассировки стека исключений ---

1 Ответ

0 голосов
/ 15 октября 2018

Согласно вашему описанию, я думаю, что код, который вы называете webapi, может содержать ошибку.Вы можете следовать моему рабочему коду, как показано ниже:

1.Публикация веб-приложения MVC и добавление виртуальных приложений.enter image description here

2. Опубликовать веб-API в виртуальном пути.enter image description here

3. Используйте HttpClient для вызова webapi в HomeController

public ActionResult Index()
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://xxx.azurewebsites.net/joeyAPI/api/");
        //HTTP GET
        var responseTask = client.GetAsync("values");
        responseTask.Wait();
        var result = responseTask.Result;
        if (result.IsSuccessStatusCode)
        {
            var readTask = result.Content.ReadAsStringAsync();
            readTask.Wait();
            var students = readTask.Result;
            ViewBag.Message = students.ToString();
         }
    }
    return View();
}

Выход:

enter image description here

...