0

.ashx ページで試してみましたが、myXMLHttpRequest.status でエラー 500 が発生し、どこに問題があるのか​​わかりません。単純な xml を生成するための単純なコードは非常に優れています。お気に入り:

<properties>
 <property>
   <address>812 Gwyn Ave</address>    
 </property>
 <property>
   <address>3308 James Ave S</address>    
 </property>
</properties>

@ここに私の解決策があります(SQLコードは正常に動作します):

public void ProcessRequest(HttpContext context)
    {
        context.Response.Clear();            
        context.Response.ContentType = "text/xml";
        XmlTextWriter writer = new XmlTextWriter();
        string user_id = context.Request.Params["user_id"];          

        string connectionString = ("Data Source=.;Initial Catalog=user_city;Integrated Security=True");
        string queryString = "select * from city_buildings where user_id=" + user_id + ";";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {                
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            writer.WriteStartDocument();
            try
            {               
                writer.WriteStartElement("buildings");
                while (reader.Read())
                {                        
                    writer.WriteStartElement("building");

                      writer.WriteElementString("user_id",Convert.ToString( reader[0]));

                    writer.WriteEndElement();

                }
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
                writer.Close();
            }
            finally
            {                   
                reader.Close();
            }
        }
    }
4

1 に答える 1

0

今はビジュアルスタジオにアクセスできないので、頭の上からこれを行ってください。あなたは出発点である必要があります。

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/xml";

    using (XmlWriter writer = XmlWriter.Create(context.Response.OutputStream))
    {
        writer.WriteStartDocument();
        // do xmlwriter stuff here.
        writer.WriteEndDocument();
    }
}

アップデート:

確かに、そこに OutputStream を配置するつもりでした。これを反映するように例を更新しました。

あなたのコードを簡単に見てきました。xmlwriter の結果を HttpResponse に出力していないことがわかります。(私の例では にバインドすることで何をするContext.Response.OutputStreamか) それがうまくいかない理由でしょう。500エラーが発生する理由はわかりませんが。おそらく、Visual Studio で実行して、これを引き起こすエラーが発生するかどうかを確認する必要があります。

また、あなたのreader[0]. これは技術的には正しいかもしれませんが、次のようなより安全な方法を使用することをお勧めします。

int fieldIndex = reader.GetOrdinal("address");
reader.GetString(fieldIndex);

これにより、クエリから目的のフィールドを常に取得できるようになります。将来、データベース スキーマを変更して列を追加することにしたとしても。

于 2011-05-15T10:58:14.887 に答える