2014-04-09 44 views
0

我感謝您的幫助。通過C#Web服務接收XML的確切方式

我創建了一個Web服務,接收XML文件,所以我也跟着下面的方法,然後我發表它,它爲我工作得很好: ....

XmlDocument xmldoc = new XmlDocument(); 
try 
{ 
    if (HttpContext.Current.Request.InputStream != null) 
    { 
     StreamReader stream = new StreamReader(HttpContext.Current.Request.InputStream); 
     string xmls = stream.ReadToEnd(); 
     xmldoc.LoadXml(xmls); 
     XmlReaderSettings settings = new XmlReaderSettings(); 
     settings.ValidationType = ValidationType.Schema; 
    } 

} 
catch (Exception ex) 
{ 
    logger.Log(NLog.LogLevel.Error, ex.Message + ex.StackTrace); 
} 

...

知道我的XML結構爲:

<reports uis="5521452542"> 
    <attribute1>val1</attribute1> 
    ... 
</reports> 

,但被一些網友的測試,從Lunix平臺也我在日誌文件中收到打電話給我的網絡服務後,錯誤以下消息錯誤;知道他們的XML文件是有效的。

只爲讓你知道;他們的XML文件未包含的聲明:

<?xml version="1.0" encoding="UTF-8"?> 

可以爲此提供錯誤或不?

2014-04-03 03:56:53.7408|Error|Root element is missing. 
    at System.Xml.XmlTextReaderImpl.Throw(Exception e) 
    at System.Xml.XmlTextReaderImpl.ParseDocumentContent() 
    at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) 
    at System.Xml.XmlDocument.Load(XmlReader reader) 
    at System.Xml.XmlDocument.LoadXml(String xml) 
    at WebService.Service1.GetInfoService() in 
    D:\yassine\Mobily\Log\WebService\WebService\WebService\Service1.asmx.cs:line 56 
    2014-04-03 03:56:53.8032|Error|Root element is missing. at System.Xml.XmlTextReaderImpl.Throw(Exception e) 
    at System.Xml.XmlTextReaderImpl.ParseDocumentContent() 
    at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options) 
    at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options) 
    at WebService.Service1.GetInfoService() in 
    D:\yassine\Mobily\Log\WebService\WebService\WebService\Service1.asmx.cs:line 71 

你能幫我找到確切的錯誤嗎?

謝謝

+0

你能記錄方法調用者發送給你的方法嗎? –

+0

查看XML標準格式。 – user1929959

+0

您可以檢查我的方法用於接收XML文件,它是正確的還是需要更多的指令? –

回答

0

唯一的例外是在說究竟什麼是錯,你將收到一個沒有根元素無效XML。要求你的朋友通過郵件向你發送原始的xml,這樣你就可以看到他們發送給你的信息。

你可以讓你Altova XmlSpy驗證xml是否有效。 一個非常基本但有效的xml應該是:

<root> 
<child></child 
</root>