Как исправить ошибку «Произошла ошибка при обработке вашего запроса» при вызове метода действия из контейнера (VS2017 / Docker)? - PullRequest
0 голосов
/ 09 июля 2019

Я создал образ из основного проекта .net в vs2017 и создал и запустил из него контейнер (через Docker).

Проект работает нормально, когда я отлаживаю его из VS2017 и запрашиваю этот URL:

Url (отлаженный проект): https://localhost:44363/api/Movies/getM

, который возвращает правильный ответ, который я ожидал.

но когда я вызываю URL из запущенного / запущенного контейнера, он возвращает эту ошибку:

Url (контейнер): http://localhost:8080/api/Movies/getM

error

Как это решить?любая помощь приветствуется.

это метод действия getM:

    [HttpGet]
    [Route("api/Movies/getM")] // stdid,sourseid
    public dynamic getdataJoin3Table(/*int id*/)
    {
        ResponseModel _objResponseModel = new ResponseModel();

        _objResponseModel.Info = "res";
        _objResponseModel.ResponseStatus = true;
        _objResponseModel.ResponseMessage = "Data Received successfully";
        return _objResponseModel;
    }

журналы докера контейнера:

enter image description here

1 Ответ

2 голосов
/ 09 июля 2019

Согласно предоставленной вами информации, вы пытаетесь подключиться к локальной базе данных, которая находится в хост-системе. Когда вы запускаете его из Visual Studio, он может найти локальную базу данных и подключиться к ней. Но когда вы запускаете приложение в Docker-контейнере, localhost становится экземпляром Docker, поэтому он больше не может подключиться к базе данных, поскольку не работает в том же Docker-контейнере.

Существует множество подходов к решению этой проблемы. Первое - вы можете запустить свою базу данных в другом контейнере Docker и связать вместе оба контейнера app и db, используя Docker Compose. Другой подход - установить строку подключения к вашей базе данных, установив переменную окружения для вашего контейнера Docker. Эта строка соединения должна указывать на базу данных хоста. Другим вариантом будет использование некоторой внешней базы данных, к которой можно получить доступ как из экземпляров хоста, так и из докера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...