我有一个场景,我创建了一个Web服务,它返回传递的用户名的名字和姓氏通过客户端(webservice消费者)。Webservices:不能隐式地将类型'System.Xml.Linq.XElement'转换为'System.Xml.XmlElement'
但即时得到在5日线的错误:无法隐式转换类型“System.Xml.Linq.XElement”到“System.Xml.XmlElement”
下面是使用检索数据
protected void BindUserDetails(string userName)
{
UserService.ServiceSoapClient client = new UserService.ServiceSoapClient();
DataSet dsresult = new DataSet();
XmlElement exelement = client.GetUserDetails(userName);
if (exelement != null)
{
XmlNodeReader nodereader = new XmlNodeReader(exelement);
dsresult.ReadXml(nodereader, XmlReadMode.Auto);
gvUserDetails.DataSource = dsresult;
gvUserDetails.DataBind();
}
else
{
gvUserDetails.DataSource = null;
gvUserDetails.DataBind();
}
}
代码
UserService是我添加的服务引用。 gvUserDetails是在GridView
[WebMethod]
public XmlElement GetUserDetails(string username) {
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["TestingCS"].ConnectionString);
cn.Open();
SqlCommand cmd = new SqlCommand("select * from userInfo where [email protected]", cn);
cmd.Parameters.AddWithValue("@username", username);
cmd.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cn.Close();
XmlDataDocument xmldata = new XmlDataDocument(ds);
XmlElement xmlElement = xmldata.DocumentElement;
return xmlElement;
}
感谢
很可能'GetUserDetails'返回'XElement',所以使用LINQ to XML代替。就个人而言,我更喜欢使用旧的DOM API :) –
代理代码是什么样的?如果*客户端* GetUserDetails方法返回'XmlElement',那么你的原始编译错误是没有意义的。 –
(另外,你应该在你的web方法中使用'using'语句...) –