diff --git a/src/Core/WinSWCore/ServiceDescriptor.cs b/src/Core/WinSWCore/ServiceDescriptor.cs index fc06a9b..a26bb1f 100755 --- a/src/Core/WinSWCore/ServiceDescriptor.cs +++ b/src/Core/WinSWCore/ServiceDescriptor.cs @@ -67,8 +67,11 @@ namespace winsw try { - string xmlstring = File.ReadAllText(BasePath + ".xml"); - dom = ServiceDescriptor.FromXML(xmlstring).dom; + using(var reader = new StreamReader(BasePath + ".xml")) + { + string xml = reader.ReadToEnd(); + dom = ServiceDescriptor.XmlValidation(xml); + } } catch (XmlException e) { @@ -105,7 +108,12 @@ namespace winsw // ReSharper disable once InconsistentNaming public static ServiceDescriptor FromXML(string xml) { - var dom = new XmlDocument(); + return new ServiceDescriptor(XmlValidation(xml)); + } + + + public static XmlDocument XmlValidation(string xml) + { XmlReaderSettings settings = new XmlReaderSettings(); Assembly a = Assembly.GetExecutingAssembly(); @@ -127,10 +135,12 @@ namespace winsw var reader = XmlReader.Create(new StringReader(xml), settings); - dom.Load(reader); - return new ServiceDescriptor(dom); + var xmlDoc = new XmlDocument(); + xmlDoc.Load(reader); + return xmlDoc; } + private string SingleElement(string tagName) { return SingleElement(tagName, false)!; diff --git a/src/Test/winswTests/ServiceDescriptorTests.cs b/src/Test/winswTests/ServiceDescriptorTests.cs index d5b6ff2..cb0f384 100644 --- a/src/Test/winswTests/ServiceDescriptorTests.cs +++ b/src/Test/winswTests/ServiceDescriptorTests.cs @@ -446,7 +446,7 @@ $@" } [Test] - public void FromXMLTest() + public void XmlValidationTest() { const string seedXml = @" myapp @@ -456,7 +456,7 @@ $@" "; - Assert.That(() => ServiceDescriptor.FromXML(seedXml), Throws.Exception.TypeOf()); + Assert.That(() => ServiceDescriptor.XmlValidation(seedXml), Throws.Exception.TypeOf()); } } }