我有一個場景,我創建了一個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'語句...) –