C# 如何从Web服务获取XML?

C# 如何从Web服务获取XML?,c#,asp.net,web-services,asmx,C#,Asp.net,Web Services,Asmx,我正在尝试访问位于上的web服务 如果调用该方法,将得到响应 现在我想从我的asp.net应用程序中调用GetCitiesByCountry方法,只将城市加载到dropdownlist中,我已经编写了以下代码 protected void Page_Load(object sender, EventArgs e) { weather.GlobalWeatherSoapClient wet = new weather.GlobalWeatherSoapClie

我正在尝试访问位于上的web服务

如果调用该方法,将得到响应

现在我想从我的asp.net应用程序中调用GetCitiesByCountry方法,只将城市加载到dropdownlist中,我已经编写了以下代码

protected void Page_Load(object sender, EventArgs e)
       {
            weather.GlobalWeatherSoapClient wet = new weather.GlobalWeatherSoapClient();
            DataSet ds = new DataSet(wet.GetCitiesByCountry("United Kingdom"));
            ds.GetXml();            
            DropDownList1.DataTextField = "City";
            DropDownList1.DataValueField = "City";
            DropDownList1.DataSource = ds;
            DropDownList1.DataBind();
}
但我得到了以下错误: “/”应用程序中出现服务器错误

IListSource不包含任何数据源

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.Web.HttpException:IListSource不包含任何数据源

源文件:c:\Users\Rafi\Documents\Visual Studio 2013\Projects\WebSite4\demo1\main.aspx.cs行:25



任何帮助都将不胜感激。

您使用了错误的数据集函数

DataSet ds = new DataSet();
ds.ReadXml(new StringReader(wet.GetCitiesByCountry("United Kingdom")));

请参见

这是因为您正在设置数据集的名称,而没有将任何数据放入其中。
Dataset(string)
构造函数将数据集的名称设置为传递到其中的字符串。因此,本质上是将数据集的名称设置为web服务返回的值

你应该这样做

DataSet yourDataSet = new DataSet("my dataset");

yourDataSet.ReadXml(new StringReader(wet.GetCitiesByCountry("United Kingdom")));
试一试

DataSet yourDataSet = new DataSet("my dataset");

yourDataSet.ReadXml(new StringReader(wet.GetCitiesByCountry("United Kingdom")));
DropDownList1.DataSource = ds.Tables["<tablename>"].DefaultView;
DropDownList1.DataSource = ds.Tables[0].DefaultView;