2010-12-06 10 views
1

すべて、SolrNet Duplicate File Conents

私は、SolrNetのMVCアプリケーションの機能の一部を拡張する方法を書いています。非常にシンプルで、私のコントローラには次のものを追加しました。

パブリック文字列インデックス(){ が { VARのSolr = ServiceLocator.Current.GetInstance>()してみてください。 文字列qs = Request.QueryString ["q"]; var results = solr.Query(新しい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>();で起こっていますか?何らかの理由で?私はいつもデバッガを歩いていて、なぜそれが2回全部書き出されているのか分からないようです。 foreachループを利用して、それを正しく反復処理しますが、再度、ファイル全体の内容を複製しています。

これについての助けがあれば助かります! アダム

答えて

1

私は完全にバッファを2回書いていたという事実を見落としました!

Response.Write(buffer.ToString()); 

return buffer.ToString(); 

アダム