从容器调用操作方法时如何修复 "An error occurred while processing your request" (VS2017 / Docker)?

How to fix "An error occurred while processing your request" while calling an action method from a container (VS2017 / Docker)?

我在 vs2017 中从 .net 核心项目创建了一个图像,并从中创建并 运行 一个容器(通过 Docker)。

当我从 VS2017 调试并请求此项目时,该项目工作正常 url :

Url(调试项目):https://localhost:44363/api/Movies/getM

哪个 returns 正确的响应是我所期望的。

但是当我从启动/运行ning 容器中调用 url 时 returns 这个错误:

Url(容器):http://localhost:8080/api/Movies/getM

如何解决?任何帮助将不胜感激。

这是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;
    }

docker 容器日志:

根据您提供的信息,您似乎正在尝试连接到位于主机系统上的本地数据库。当您从 Visual Studio 运行 它时,它可以找到本地数据库并连接到它。但是当你 运行 你的应用程序在 docker 容器中时,localhost 变成了 docker 实例,所以它不能再连接到数据库,因为它不 运行 在同一个 docker 容器。

有多种方法可以解决此问题。首先 - 您可以 运行 另一个 docker 容器中的数据库和 link appdb 容器一起使用 Docker Compose。另一种方法是通过为 docker 容器设置环境变量来将连接字符串设置到数据库。此连接字符串应指向主机的数据库。另一种选择是使用一些可以从主机和 docker 实例访问的外部数据库。