1、http:/tempuri.org/)WebServiceBinding(ConformsToWsiProfiles.BasicProfile1_1)publicclassService:System.Web.Services.WebService()/如果使用设计的组件,请取消注释以下行/InitializeComponent();WebMethod(Description=最简单的方法stringHelloWorld()returnHelloWorld;你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。若要修改,则写方
2、法,注意前面要加上WebMethod。可以按F5运行此页面,同时也可以设置断点进行调试(前提是要将web.config中设为true,而实际项目运行中,则改为false)2.生成网站很简单,“生成”-“生成网站”或直接Shift+F63.发布网站也是简单,“生成”-“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。比如:D:我的文档Visual Studio 2005ProjectsWebSite1PrecompiledWebWebSite1,我们需要目录下的文件。4.配置IIS在你的WEB目录下一个文件夹,比如webservice,并将第3步发布目录中的所有文件和目录拷贝
3、到这个目录中,打开IIS,找到你的站点,在这个webservice目录上点右键,选择属性,在弹出对话框的“目录”选择项卡中点击“创建”按钮,然后确定即可。到这时,已经大功告成,你可以通过访问http:/域名/webservice/Service.asmx来验证。页面会出现如下图所示内容:注意:除了需要在IIS中对服务目录创建程序外,还要注意防火墙或杀毒软件的设置,我在首次访问service.asmx文件时,杀毒软件报告w3wp.exe在系统文件夹中生成asp_code.dll等,应该允许其他创建,否则会无法访问。通过这样简单的方法,你可以轻松建立自己的WEB服务,在同一站点还可以有多个WEB服
4、务其实从上面的第3步开始可以简化:“生成”-“发布网站”,这里会弹出一个对话框,更改目录位置,选择左边的本地IIS,右边选择默认网站,选择某个目录即可,再按确定即可,不需要第四步了。下面开始在项目中调用此服务:(调用之前要现在项目中添加服务引用)第一:对web项目点击右键,如图一。第二:点击添加web 引用,如下图二.第三:查找可用的web service,如果是本解决方案内的直接搜索就行,如果是外部的,就输入有效地址然后查询,这里面可以测试web service,如图三:第四:添加引用成功后就会出现Web References目录.如图四,然后就是调用了。这应该就是最基本的添加web ser
5、vice引用的方法了。当时我也是按照这样的思路去添加。发现类库中点击右键并没有出现我熟悉的 “添加web 引用”,而出现图五效果:此时我认为可能是升级的原因变成添加服务引用,接下来的操作和上面操作相同.点击出现图六;输入web service地址,测试连接都成功,添加成功后出现图七:然而调用的时候并不像想像的那么成功,结果可想而之,我添加的WCF服务。这里错误代码我就不好意思帖了。知道引用对象错了后,就是让类库来添加web service,然而点击类库后,右键并没有添加web 服务的选项。如何让类库支持添加web service引用成了我最大的难题。此时我咨询了同事,基本排除程序问题,因为通过
6、网站形式可以正常访问web service。园子里的朋友你们在VS08中的类库会添加web servece引用吗?我搜索了一下午,毫无结果,最好只好再问别的同事,几经周折,我把方法贴出来show一下;对目标类库点击右键,如图六:点击“添加服务引用”如图八:关键是图左下角的“高级”按键。点击如图九:注意了,同样是左下角,“添加WEB引用”的按钮终于出现了,点击如图十:之后的操作就不多说了。到这里,就最终完成了C#的类库中添加Web Service引用的目的。操作并不复杂,只是实在是想不明白,VS为什么要把添加web引用放的这么隐蔽呢,难道是为了WCF的推广?而在项目中实际调用时这样写:SerRe
7、f.Service ws = new SerRef.Service();/SerRef是web引用名。 string sst = ws.HelloWorld();/HelloWorld是服务方法。若是后来重新对服务进行添加了新的服务方法,注意别忘了点击服务别名,右键“更新web引用”。运行项目时若出现类似“权限。”的错误时,请按照给出的提示(vs 2008中会有建议操作的,点下就ok了)更正。好像在调试过程中不能在调用方法时单步调试。上面是发布与调用web服务,而WCF服务是类似的(建立是应选择WCF服务,不要选择新建”-“网站”,在对话框中选择“ASP.NET Web服务”)在web ser
8、vice中如何得到客户端IP, 通过代理,获取真实的ipif(Context.Request.ServerVariablesHTTP_VIA!=null) ip=Context.Request.ServerVariablesHTTP_X_FORWARDED_FOR.ToString(); elseREMOTE_ADDRC#WinForm利用Web Service API查询数据库并显示到客户端我们知道C#的Web ServiceAPI的返回值可以是DataSet类型,这就使得我们可以通过Web Service API来查询数据库,这个功能将成为我们许多应用的基础。下面我们用一个简单的Winfo
9、rm调用的例子来说明这个问题。首先我们有一个SQL Server2000数据库book在服务器webserviceserver上,book库中有张表bookinfo,包含书名、作者、价格等字段,数据库用户sa,密码123456。我们利用VS2005创建一个Web Service项目并发布出去,这里不再详述如何建立和发布,如有不清楚的地方请参阅相关资料。也可以参考我的另两篇文章: SERVICE) Service API)我们在项目的Service.cs里编写一个查询数据库的API,为了简化问题,我们编写的这个API只接受一个字符串参数,用来在书名字段做前方匹配的查询,返回一个DataSet,这
10、个DataSet中包含一个名为bookinfo的DataTable,bookinfo中含有书名、作者和价格字段,代码如下:System.Data;System.Data.SqlClient;/定义一个sqlconnection连接成员SqlConnectionsqlconnnewSqlConnection(Server=webserviceserver;InitialCatalog=book;uid=sa;pwd=123456);/貌似必须用sa方式登陆啊WebMethod欢迎使用我的WEB服务!DataSetsearchBook(stringbookname)sqlconn.Open();sqlselecttop50书名,作者,价格frombookinfowhere书名like+bookname%orderbyiddescSqlDataAdapterdaSqlDataAdapter(sql,sqlconn);dsDataSet();da.Fill(ds,bookinfods;编写好后将Web Service发布出去。现在我们来建立一个winform的Windows应用程序项目,并在项目中将我们刚刚发布的WEB Service做为一个WEB引用添加进来。在项目窗体中创
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1