环境说明:win7、IIS6.0、 VS2010、 SQL Server 2005。
第一步:创建webservice项目
在VS2010中创建webservice项目有两种方法:在.net 4.0下创建和在.net 4.0以下创建的方法;此处选择在.net 4.0下创建的方法,即在VS2010中执行文件-》新建-》项目-》ASP.NET空Web应用程序,再在项目中添加Web服务;
第二步:按webservice编写代码(将DataSet转Xml)
[WebMethod(Description = "说明")]
public XmlDataDocument GetSiteAData()
{
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection("server = BANG-PC\\SQLEXPRESS; database = sharpdemo;uid = sa; pwd = sasa");
conn.Open();
string sql = "select * from Login";
SqlDataAdapter da = new SqlDataAdapter(sql,conn);
da.Fill(ds,"list");
conn.Close();
ds.EnforceConstraints = false;
XmlDataDocument xd = new XmlDataDocument(ds);
XmlNode root1 = xd.DocumentElement;
XmlNodeList roots = root1.SelectNodes("list");
foreach (XmlNode roota in roots)
{
XmlElement link = xd.CreateElement("SiteName");
link.InnerText = "测试";
roota.AppendChild(link);
}
return xd;
}
第三步:在IIS6.0中发布webservice,详见http://www.jb51.net/article/29787.htm
发布后的URL:http://localhost:8080/WebService11.asmx
注意:web引用名将作为你加入的webservice的命名空间,这里的web引用名为SiteA
第四步:创建调用webservice项目并添加web引用
创建一个ASP.NET空Web应用程序,并新建index.aspx窗体,在该窗体中添加一个GridView控件;
添加web引用:右击项目,点添加web引用,输入webservice地址,如:http://localhost:8080/WebService11.asmx,必须保证你输入的webservice存在.然后引用即可;
在index.aspx后台代码中添加调用webservice代码(将Xml转DataSet)
protected void Page_Load(object sender, EventArgs e)
{
SiteA.WebService11 serviceA = new SiteA.WebService11();
DataSet ds = new DataSet();
XmlNode xmlNode1;
XmlDataDocument xd = new XmlDataDocument();
StringBuilder xmlString1;
xmlNode1 = serviceA.GetSiteAData();
if (xmlNode1 == null)
return;
xmlString1 = new StringBuilder(xmlNode1.OuterXml);
if (xmlString1.ToString().Equals("<NewDataSet xmlns=\"\"></NewDataSet>"))
return;
xd.LoadXml(xmlString1.ToString());
ds.ReadXml(new XmlNodeReader(xd));
GridView1.DataSource = ds.Tables["list"].DefaultView;
GridView1.DataBind();
}
在操作过程中出现问题:
1、System.InvalidOperationException: Unable to generate a temporary class无法生成临时类(result=1).
error CS2001: Source file 'C:\Windows\TEMP\qdn330ew.0.cs; could not be found
解决方法:找到C:\Windows\TEMP,给Temp文件夹的user用户添加足够的权限;
2、无法识别的属性“targetFramework”。请注意属性名称区分大小写
行 9: <system.web>
行 10: <compilation debug="false" targetFramework="4.0" />
行 11: </system.web>
解决方法:修改应用程序池的.NET Framework 版本为相应版本即可,程序是.net 4.0的,而iis中的应用程序池是.net 2.0的
参考:http://blog.csdn.net/vampireal/article/details/416180