通过从appsettings.json中读取文件路径来创建文件会自动将我项目的根目录添加到该路径中

时间:2019-09-26 11:03:32

标签: c# asp.net-core asp.net-core-2.2

我正在尝试使用自定义中间件从ASP.NET Core 2.2 API记录异常。在中间件中,我正在从appsettings.json

中读取日志路径。

我正在从appsettings.Developmnet.json阅读此“ ExceptionLogPath”部分,并执行以下操作

var dirPath = _config.GetSection("ExceptionLogPath").Value;

            var filename = $"ErrorLog_{DateTime.Now.ToString("yyyyMMdd")}.txt";

            String fullpath = Path.Combine(dirPath, filename);

            if (!File.Exists(fullpath))
            {
                try
                {

                    File.Create(fullpath).Close();
                }
                catch (Exception exx)
                {
                    throw exx;
                }
}

变量fullPath具有从配置读取的确切路径。

但是File.Create(fullPath)引发了一个异常,因为在运行时全路径会将我项目的相对路径作为前缀附加!因此,系统无法找到创建文件的路径!

下面是我的appsettings.Development.json

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "ExceptionLogPath": "‪C:\\ExceptionLogs"
}

问题是这仅在我的项目中发生。当我的同事在他的PC中运行相同的项目时,他能够在指定的路径下创建文件。

当我从appsettings.json读取路径时,我想知道为什么要添加项目的根目录。我能够使用硬编码的路径值创建文件。仅当我从appsettings.json中读取时失败

编辑 我在尝试在给定路径上创建文件时遇到以下异常:

The filename, directory name, or volume label syntax is incorrect : 'E:\Dev\Registry.API\\‪C:\ExceptionLogs\ErrorLog_20190926.txt'

如您所见,文件路径的第一部分以我的项目根路径为前缀!

0 个答案:

没有答案