C# 4.0 '';,十六进制值0x1F不是有效字符。第1行,项目1

C# 4.0 '';,十六进制值0x1F不是有效字符。第1行,项目1,c#-4.0,httpwebrequest,xmltextreader,C# 4.0,Httpwebrequest,Xmltextreader,我通过httpwebrequest获取xml数据。下面的代码运行良好。但发生了一些变化,并突然在Read()方法上出现异常,错误为:十六进制值0x1F的“”不是有效字符。第1行,第1项。在web浏览器中,sURL为我提供了一个有效的xml。我不知道发生了什么变化 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sURL); req.Method = "GET"; WebResponse response = r

我通过httpwebrequest获取xml数据。下面的代码运行良好。但发生了一些变化,并突然在Read()方法上出现异常,错误为:十六进制值0x1F的“”不是有效字符。第1行,第1项。在web浏览器中,sURL为我提供了一个有效的xml。我不知道发生了什么变化

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sURL);
    req.Method = "GET";
    WebResponse response = req.GetResponse();
    StreamReader resStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    XmlTextReader reader = new XmlTextReader(resStreamReader);
    while (reader.Read())
    {
       // some code
     }
在讨论这个问题时,结果是

服务器有时会压缩响应以节省带宽,当这种情况发生时,您需要在尝试读取响应之前先解压缩响应。幸运的是,.NET framework可以自动执行此操作,但是,我们必须打开此设置

这个stackoverflow主题解决了这个问题

您应该检查url对可能的GZip压缩用法的响应

祝你今天愉快