我正在尝试使用自定义中间件从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'
如您所见,文件路径的第一部分以我的项目根路径为前缀!