Содержание дубликатов файлов SolrNet - PullRequest
1 голос
/ 07 декабря 2010

All,

Я написал метод, который расширяет некоторые функциональные возможности в примере приложения MVC SolrNet.Это очень просто, и в моем контроллере я добавил следующее:

public string Index () {try {var solr = ServiceLocator.Current.GetInstance> ();String qs = Request.QueryString ["q"];var results = solr.Query (new SolrQueryByField ("asciiname", qs));

            StringBuilder buffer = new StringBuilder();

            buffer.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
            buffer.Append("<kml xmlns=\"http://www.opengis.net/kml/2.2\"\n");
            buffer.Append(" xmlns:gx=\"http://www.google.com/kml/ext/2.2\">\n");
            buffer.Append("<Document>\n");
            buffer.Append("<name>\n");
            buffer.Append("Gazetteer\n");
            buffer.Append("</name>\n");
            buffer.Append("<description>\n");
            buffer.Append("World Places\n");
            buffer.Append("</description>\n");

            foreach (var i in results)
            {
                String lat = i.latitude.ToString();
                String lon = i.longitude.ToString();
                String name = i.asciiName.ToString();
                String coords = lon.ToString() + ","  + lat.ToString();

                name = name.Replace("&", "&amp;");
                name = name.Replace("<", "&lt;");
                name = name.Replace(">", "&gt;");

                buffer.Append("<Placemark>\n");
                buffer.Append("<name>\n");
                buffer.Append(name);
                buffer.Append("</name>\n");
                buffer.Append("<Point>\n");
                buffer.Append("<coordinates>\n");
                buffer.Append(coords);
                buffer.Append("</coordinates>\n");
                buffer.Append("</Point>\n");
                buffer.Append("</Placemark>\n");
            }
            buffer.Append("</Document>\n");
            buffer.Append("</kml>");
            Response.Write(buffer.ToString());

            Response.AddHeader("content-disposition", "attachment; filename=geonames.kml");
            Response.ContentType = "application/vnd.google-earth.kml+xml";
            Response.AppendHeader("Content-Encoding", "kml");

            return buffer.ToString();
        }
        catch (Exception)
        {
            return "ERROR";
        }
    }

Файл KML создается, но содержимое дублируется, начиная с тега.Это происходит в var solr = ServiceLocator.Current.GetInstance> ();по какой-то причине?Я весь день прогуливался по отладчику и, похоже, не могу понять, почему он пишет все дважды.Он использует цикл foreach и выполняет итерацию правильно, но, повторюсь, дублирует содержимое всего файла.

Любая помощь по этому вопросу была бы полезна!Адам

1 Ответ

1 голос
/ 07 декабря 2010

Тьфу ... Я полностью упустил из виду тот факт, что дважды выписывал буфер!

Response.Write(buffer.ToString());

и

return buffer.ToString();

Адам

...