【问题标题】:Index was outside the bounds of the array in Directory.Exists(String) method索引超出 Directory.Exists(String) 方法中的数组范围
【发布时间】:2023-01-11 05:41:00
【问题描述】:

我在 docker (Ubuntu 22.04) 中使用 .net 核心应用程序

运行时出现以下错误: 未处理的异常。 System.IndexOutOfRangeException:索引超出数组范围。 在 WebServer.FileMethods.ReadConfig() 在 /src/WebServer/WorkClasses/FileMethods.cs:line 32

此错误指向以下代码: 第 32 行

if (!Directory.Exists($"{path}Config"))
{
     Directory.CreateDirectory($"{path}Config");
}

我试着点("/app/Config") instead of ($"{path}Config") 结果是一样的

在重新安装 docker 之前一切正常 Directory.GetCurrentDirectory() 方法指向“/app”路径 所以路径是正确的

【问题讨论】:

  • 请显示完整的堆栈跟踪,最好是minimal reproducible example?在那个地方得到那个错误似乎很奇怪,除非 path 是一个在评估时抛出异常的属性......(我认为堆栈跟踪可能在行号方面不正确。A完整的示例将使它更容易提供帮助。)
  • 考虑使用 Path.Combine 而不是简单的连接(这不是您问题的答案)
  • 你附近有伐木场吗?我记得一个类似的问题是由于日志记录 api 的并发问题。

标签: c# docker


【解决方案1】:

这是我的错误和疏忽

错误出现在代码的后面,日志指向方法的第一行,即: 如果 (!Directory.Exists($"{path}Config")) 我没想到 这条线绝对没有问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多