为什么我们的几个用户得到“System.InvalidOperationException:不是预期的。”?

时间:2010-03-30 09:37:11

标签: c# serialization

除此之外,我们的软件连接到在线商店。该过程的一部分下载了要在软件中预览的产品目录。我们的一些用户在使用商店时遇到问题,这似乎源于日志中的这个错误:

System.InvalidOperationException: There is an error in XML document (2, 2). ---> System.InvalidOperationException: <html xmlns=''> was not expected.
at 
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderCategoryInfo.Read4_Category()

目录是从xml反序列化的,这是一个示例/格式:

<?xml version="1.0"?>
<Category xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id>1</Id>
  <Name>Root</Name>
  <ParentCategoryId>-1</ParentCategoryId>
  <StoryList />
  <ChildCategoryList />
</Category>

在实际数据中,各个列表中都有故事和catergories。

获取xml数据的代码是:

var request = HttpWebRequest.Create(_onlineStore + string.Format("integration/category/catalogue.ashx?username={0}&password={1}", HttpUtility.UrlEncode(username), HttpUtility.UrlEncode(password))) as HttpWebRequest;
request.Method = "GET";
using (var response = request.GetResponse() as HttpWebResponse)
{
    var serializer = new XmlSerializer(typeof(CategoryInfo));
    CategoryInfo rtnVal = serializer.Deserialize(response.GetResponseStream()) as CategoryInfo;
    return rtnVal;
}

和CategoryInfo类:

[Serializable]
[XmlRoot("Category")]
public class CategoryInfo
{
    public CategoryInfo()
    {
        ChildCategoryList = new List<CategoryInfo>();
        StoryList = new List<StoryInfo>();
    }

    public int Id
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }

    public int ParentCategoryId
    {
        get;
        set;
    }

    [XmlArrayItem("Category")]
    public List<CategoryInfo> ChildCategoryList
    {
        get;
        set;
    }

    [XmlArrayItem("Story")]
    public List<StoryInfo> StoryList
    {
        get;
        set;
    }
}

重要的是它适用于绝大多数人。我可能是错的,代码中可能有一个可怕的错误,它只适用于大多数人侥幸,但我怀疑问题在于用户计算机或网络连接。

我们遇到的一个常见问题是绕过客户必须使用的代理和/或防火墙。大多数人都必须使用一个,目录下载和程序通常适用于他们。

除非有人能在代码或xml格式中发现错误,否则我真正想要的答案是为什么这可能发生在少数用户身上的原因以及如何在不访问用户计算机的情况下调试此问题或特别是精通技术的用户,手上有很多时间。

1 个答案:

答案 0 :(得分:0)

这是由本地网络代理将请求重定向到页面中的html日志引起的。