diff --git a/src/Core/ServiceWrapper/Main.cs b/src/Core/ServiceWrapper/Main.cs index d15e0dd..e035663 100644 --- a/src/Core/ServiceWrapper/Main.cs +++ b/src/Core/ServiceWrapper/Main.cs @@ -455,6 +455,13 @@ namespace winsw Log.Debug("Completed. Exit code is 0"); return 0; } + catch (InvalidDataException e) + { + string message = "The configuration file cound not be loaded. " + e.Message; + Log.Fatal(message, e); + Console.Error.WriteLine(message); + return -1; + } catch (WmiException e) { Log.Fatal("WMI Operation failure: " + e.ErrorCode, e); diff --git a/src/Core/WinSWCore/ServiceDescriptor.cs b/src/Core/WinSWCore/ServiceDescriptor.cs index 511dbb8..bcaf140 100755 --- a/src/Core/WinSWCore/ServiceDescriptor.cs +++ b/src/Core/WinSWCore/ServiceDescriptor.cs @@ -63,7 +63,14 @@ namespace winsw BaseName = baseName; BasePath = Path.Combine(d.FullName, BaseName); - dom.Load(BasePath + ".xml"); + try + { + dom.Load(BasePath + ".xml"); + } + catch (XmlException e) + { + throw new InvalidDataException(e.Message, e); + } // register the base directory as environment variable so that future expansions can refer to this. Environment.SetEnvironmentVariable("BASE", d.FullName);