Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从c知道docker linux容器中是否存在目录#_C#_Docker_Asp.net Core_Dockerfile - Fatal编程技术网

C# 从c知道docker linux容器中是否存在目录#

C# 从c知道docker linux容器中是否存在目录#,c#,docker,asp.net-core,dockerfile,C#,Docker,Asp.net Core,Dockerfile,我正在将ASP.NET核心应用程序部署到docker桌面上运行的docker linux容器中(我的机器上有Windows)。我创建了Dockerfile,开头是: FROM mcr.microsoft.com/dotnet/core/runtime:2.1-stretch-slim AS base WORKDIR /app/backend 映像创建成功,但当我在容器中运行应用程序时,我得到一个未处理的异常:System.NullReferenceException。我能够在VS 20

我正在将ASP.NET核心应用程序部署到docker桌面上运行的docker linux容器中(我的机器上有Windows)。我创建了Dockerfile,开头是:

  FROM mcr.microsoft.com/dotnet/core/runtime:2.1-stretch-slim AS base
  WORKDIR /app/backend
映像创建成功,但当我在容器中运行应用程序时,我得到一个未处理的异常:System.NullReferenceException。我能够在VS 2019中使用Docker支持进行调试,我发现这将返回false并引发异常:

if (!Directory.Exists("/app/backend"))
        {
            throw some custom exception;
        }
我试过了,但也没用

 DirectoryInfo dir = new DirectoryInfo("/app/backend");

        if (!dir.Exists)
        {
            throw some custom exception
        }

我不明白它为什么不工作。

我想是因为您的工作目录是
/app/backend
,并且正在执行的dll将存在于linux的backend文件夹中。因此,您的代码将查找文件夹
executingPath/app/backend
。所以尝试使用
var path=Server.MapPath(“~/app/backend”);如果(!Directory.Exists(path))
您发布的所有代码都不会抛出NullReferenceException-请解决您的问题。我也不明白为什么代码必须检查dir是否存在,如果不存在,则抛出一个非常不清楚的异常,您必须使用调试器来解决它;如果代码想要有一个/app/backend目录,它应该创建它,然后使用它,或者至少抛出一个带有合理消息的异常。。但是,如果管理员要做的只是创建文件夹并重新运行应用程序,那么代码应该创建文件夹本身