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 回答