Ошибка генерации карты сайта C# Ashx Google xml

Я использую ashx для доставки карты сайта для Google. Все работало отлично, пока я недавно.

При запросе карты сайта в Google по адресу http://www.naughtyfancydress.com/sitemap.ashx я получить: Ошибка синтаксического анализа XML: неправильный формат Расположение: http://naughtyfancydress.com/sitemap.ashx Номер строки 1, столбец 1:`I�%&/m�{J�

Мой урезанный код в ashx выглядит так:

context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(3600));
context.Response.Cache.SetCacheability(HttpCacheability.Public);

var writer = new XmlTextWriter(context.Response.OutputStream, Encoding.UTF8);
writer.Formatting = Formatting.Indented;

writer.WriteStartDocument();
writer.WriteStartElement("urlset");
writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
writer.WriteAttributeString("xsi:schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");

writer.WriteStartElement("url");
writer.WriteElementString("loc", "http://www.naughtyfancydress.com/");
writer.WriteElementString("changefreq", "daily");
writer.WriteElementString("priority", "1.0");
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();

Любые идеи о том, как решить, будут приветствоваться.

РЕДАКТИРОВАТЬ: Если вы проверите ссылку выше в Chrome, ничего не отобразится, я считаю, что это проблема Chrome, проверьте ссылку с FireFox.


person asn1981    schedule 19.12.2010    source источник
comment
Когда я перехожу по URL-адресу: naughtyfancydress.com/sitemap.ashx, я ничего не получаю в ответ , возможно, дело в этом. Вы просмотрели URL-адрес и убедились, что действительно получаете вывод XML?   -  person Chandu    schedule 19.12.2010
comment
Ну, если вы просматриваете в хроме, вы ничего не получите, но я думаю, что это проблема хрома. Если вы попробуете в IE или Firefox, вы получите ошибку, о которой я упоминал выше, а именно: Ошибка синтаксического анализа XML: неправильный формат Расположение: naughtyfancydress.com/sitemap.ashx Номер строки 1, столбец 1:`I�%&/m�{J�   -  person asn1981    schedule 19.12.2010
comment
После дальнейшего изучения приведенный выше точный код работает в моем проекте .net 3.5. Он перестал работать только на новом сайте, написанном на .net 4. Я думаю, что это связано с этим, но что делать, чтобы решить проблему?   -  person asn1981    schedule 21.12.2010


Ответы (1)


Для всех остальных проблема заключалась в том, что в Global.asax в методе Application_PreRequestHandlerExecute я был gzip в своем контенте.

Это, очевидно, меняет кодировку содержимого на gzip с utf-8, хотя это было указано выше. Это исправление, убедитесь, что обработчик карты сайта не отправляет содержимое как gzip.

person asn1981    schedule 21.12.2010