【发布时间】:2021-01-07 04:26:54
【问题描述】:
我得到一个错误
> Application: RfidService.exe Framework Version: v4.0.30319
> Description: The process was terminated due to an unhandled exception.
> Exception Info: System.IO.DirectoryNotFoundException at
> System.IO.__Error.WinIOError(Int32, System.String) at
> System.IO.FileStream.Init(System.String, System.IO.FileMode,
> System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32,
> System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean,
> Boolean, Boolean) at System.IO.FileStream..ctor(System.String,
> System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32,
> System.IO.FileOptions, System.String, Boolean, Boolean, Boolean)
当我启动我的服务应用程序时,这是在事件查看器中。它可以安装并启动,但在事件查看器中它给了我上面提到的错误,所以它不起作用。唯一需要的文件已经在 bin 中,这就是我在代码中调用它的方式。
using (var streamReader = new StreamReader(Directory.GetCurrentDirectory() + $@"\JsonData\ApplicationSetting.json"))
{
var jsonString = streamReader.ReadToEnd();
_applicationSetting = JsonConvert.DeserializeObject<ApplicationSetting>(jsonString);
if (_applicationSetting != null)
{
_pcsConnectionString =
$@"Data Source={_applicationSetting.PcsSetting.DataSource};Initial Catalog={_applicationSetting.PcsSetting.InitialCatalog};user={_applicationSetting.PcsSetting.User};Password={_applicationSetting.PcsSetting.Password}";
_lcsConnectionString =
$@"Data Source={_applicationSetting.LaneSetting.DataSource};Initial Catalog={_applicationSetting.LaneSetting.InitialCatalog};user={_applicationSetting.LaneSetting.User};Password={_applicationSetting.LaneSetting.Password}";
_serviceConnectionString =
$@"Data Source={_applicationSetting.ServiceDatabase.DataSource};Initial Catalog={_applicationSetting.ServiceDatabase.InitialCatalog};user={_applicationSetting.ServiceDatabase.User};Password={_applicationSetting.ServiceDatabase.Password}";
_sendingDelay = _applicationSetting.LcsSetting.SendingDelay;
_activeQueueTimeInterval = _applicationSetting.LcsSetting.ActiveQueueTimeInterval;
_messageLoggerEngine = new MessageLoggerEngine(_serviceConnectionString);
}
}
我可以尝试什么来解决这个问题?
编辑
应用程序exe和json文件所在的文件夹在同一目录下。看这张图片:
【问题讨论】:
-
异常来自这一行:
var streamReader = new StreamReader(Directory.GetCurrentDirectory() + $@"\JsonData\ApplicationSetting.json"),验证这是一个有效的路径。 -
GetCurrentDirectory是应用程序的当前工作目录,它不一定与您的.exe的目录相同。 -
@RyanWilson,当我运行我的控制台应用程序时,它运行良好。它可以找到目录和文件。只是当我将它作为服务运行时,它给了我这个错误。
-
@dxiv 请参阅我的编辑。谢谢。
-
@Ibanez1408 记录
Directory.GetCurrentDirectory在将其作为服务运行时返回的路径,并检查它是否返回您认为的内容
标签: c#