0

我正在开发一个 asp.net 项目,我必须在服务器端动态创建一个 XML 文件。数据来自服务器,我必须将其发送给客户端作为对请求的响应。客户端 (silverlight) 获取响应并使用数据提供 GUI 控件。现在,我收到此错误和一个没有数据的空白控件:

906 Content-Length mismatch: Response Header indicated 192,822 bytes, but server sent 192,856 bytes.

这基本上告诉我响应实际上比标题所说的要大。我检查了 Fiddler 中的响应以确保 XML 文件正确,并且在 XML 的末尾发现了一些 html 标签。当然,它不会在客户端进行解析,并且控件完全是空白的。

这是代码

 ...

                MemoryStream ms = new MemoryStream();
                //Use a writer to greate the XML
                using (XmlWriter writer = XmlWriter.Create(ms))
                {
                    writer.WriteStartDocument(); //Header
                    writer.WriteComment("Response");
                    {
                        writer.WriteStartElement("sfdata"); //<Root>
                        {      

                                  writer.WriteStartElement("dataPoint");
                                {                        
                                    writer.WriteStartElement("ids");                                        
                                    foreach (int i in baseIndexes)
                                    {
                                        writer.WriteStartElement("sfId");
                                        writer.WriteValue(i);
                                        writer.WriteEndElement();                                            
                                    }
                                    writer.WriteEndElement();
                                }
                                writer.WriteEndElement(); //<End dataPoint>
                            }
                           writer.WriteEndElement(); //closes <Root>

                       }
                    writer.WriteEndDocument();
                    writer.Close();

                //Convert Memory Stream to Byte Array
                    byte[] data = ms.ToArray();

                    string xmlFileName = "OrdExp_" + DateTime.Today.Year.ToString() +
                        DateTime.Today.Month.ToString("00") +
                        DateTime.Today.Day.ToString("00");

                    //Creating the Context
                    this.Context.Response.Clear();

                    //Heads up browser, here comes some XML
                    this.Context.Response.ContentType = "text/xml";
                    this.Context.Response.AddHeader("Content-Disposition:",
                        "attachment;filename=" + HttpUtility.UrlEncode(xmlFileName));

                    //Set the size of the file so the progress bar reports that correctly
                    HttpContext.Current.Response.AddHeader("Content-Length",
                        data.Length.ToString());

                    this.Context.Response.BinaryWrite(data);                            
                    this.Context.ApplicationInstance.CompleteRequest();
                    ms.Flush();
                    ms.Close();
                }

希望我没有错过任何括号。

这就是构建文件并在 Context.Response 中返回它的所有代码。我已经经历了很多次,我没有看到任何会在最后添加额外的 html 标签的东西,但我对这些东西不是很好。所以我可能会遗漏一些东西。这些是我在 xml 文件末尾找到的标签:

</span>
</form>
</body>
</html>
4

0 回答 0