如何从容器(VS2017 / Docker)调用操作方法时解决“处理请求时发生错误”?

时间:2019-07-09 06:39:22

标签: docker asp.net-core visual-studio-2017

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

当我从VS2017调试它并请求此URL时,该项目运行正常:

网址(已调试的项目):https://localhost:44363/api/Movies/getM

它返回我期望的正确响应。

但是当我从启动/正在运行的容器中调用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;
    }

docker容器日志:

enter image description here

1 个答案:

答案 0 :(得分:2)

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

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