ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:676.33KB ,
资源ID:26034361      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26034361.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#中调用Web Service要点.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#中调用Web Service要点.docx

1、C#中调用Web Service要点如何创建和发布Web Service WEB服务可以说是下一代WEB应用程序的基础,无论客户端是WINDOWS应用、ASP.NET Web Form程序、甚至其他语言的客户端,都可以与同一个WEB服务通信,其平台和语言无关性使其有了广阔的发展空间。利用VS2005和IIS我们可以很容易地发布一个WEB SERVICE,因为其中有几个细节需要注意,所在初学者常常在这里出现问题,现通过一个简单的例子说明如何创建和发布一个WEB SERVICE。环境:Windows Server 2003,.Net FrameWork 2.0,IIS6.0工具:VS20051.首

2、先VS2005中新建一个WEB服务项目。打开“文件”-“新建”-“网站”,在对话框中选择“ASP.NET Web服务”,VS2005会自动生成一个Service.cs文件,包含如下代码:usingSystem;usingSystem.Web;usingSystem.Web.Services;usingSystem.Web.Services.Protocols;WebService(Namespace=http:/tempuri.org/)WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)publicclassService:Sys

3、tem.Web.Services.WebServicepublicService()/如果使用设计的组件,请取消注释以下行/InitializeComponent();WebMethod(Description=最简单的方法)publicstringHelloWorld()returnHelloWorld;你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。若要修改,则写方法,注意前面要加上WebMethod。可以按F5运行此页面,同时也可以设置断点进行调试(前提是要将web.config中设为true,而实际项目运行中,则

4、改为false)2.生成网站很简单,“生成”-“生成网站”或直接Shift+F63.发布网站也是简单,“生成”-“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。比如:D:我的文档Visual Studio 2005ProjectsWebSite1PrecompiledWebWebSite1,我们需要目录下的文件。4.配置IIS在你的WEB目录下一个文件夹,比如webservice,并将第3步发布目录中的所有文件和目录拷贝到这个目录中,打开IIS,找到你的站点,在这个webservice目录上点右键,选择属性,在弹出对话框的“目录”选择项卡中点击“创建”按钮,然后确定即可。

5、到这时,已经大功告成,你可以通过访问http:/域名/webservice/Service.asmx来验证。页面会出现如下图所示内容:注意:除了需要在IIS中对服务目录创建程序外,还要注意防火墙或杀毒软件的设置,我在首次访问service.asmx文件时,杀毒软件报告w3wp.exe在系统文件夹中生成asp_code.dll等,应该允许其他创建,否则会无法访问。通过这样简单的方法,你可以轻松建立自己的WEB服务,在同一站点还可以有多个WEB服务注意:其实从上面的第3步开始可以简化:“生成”-“发布网站”,这里会弹出一个对话框,更改目录位置,选择左边的本地IIS,右边选择默认网站,选择某个目录即

6、可,再按确定即可,不需要第四步了。下面开始在项目中调用此服务:(调用之前要现在项目中添加服务引用)第一:对web项目点击右键,如图一。第二:点击添加web 引用,如下图二.第三:查找可用的web service,如果是本解决方案内的直接搜索就行,如果是外部的,就输入有效地址然后查询,这里面可以测试web service,如图三:第四:添加引用成功后就会出现Web References目录.如图四,然后就是调用了。这应该就是最基本的添加web service引用的方法了。当时我也是按照这样的思路去添加。发现类库中点击右键并没有出现我熟悉的 “添加web 引用”,而出现图五效果:此时我认为可能是升

7、级的原因变成添加服务引用,接下来的操作和上面操作相同.点击出现图六;输入web service地址,测试连接都成功,添加成功后出现图七:然而调用的时候并不像想像的那么成功,结果可想而之,我添加的WCF服务。这里错误代码我就不好意思帖了。知道引用对象错了后,就是让类库来添加web service,然而点击类库后,右键并没有添加web 服务的选项。如何让类库支持添加web service引用成了我最大的难题。此时我咨询了同事,基本排除程序问题,因为通过网站形式可以正常访问web service。园子里的朋友你们在VS08中的类库会添加web servece引用吗?我搜索了一下午,毫无结果,最好只好

8、再问别的同事,几经周折,我把方法贴出来show一下;第一:对目标类库点击右键,如图六:第二:点击“添加服务引用”如图八:关键是图左下角的“高级”按键。点击如图九:第三:注意了,同样是左下角,“添加WEB引用”的按钮终于出现了,点击如图十:之后的操作就不多说了。到这里,就最终完成了C#的类库中添加Web Service引用的目的。操作并不复杂,只是实在是想不明白,VS为什么要把添加web引用放的这么隐蔽呢,难道是为了WCF的推广?而在项目中实际调用时这样写:SerRef.Service ws = new SerRef.Service();/SerRef是web引用名。 string sst =

9、ws.HelloWorld();/HelloWorld是服务方法。若是后来重新对服务进行添加了新的服务方法,注意别忘了点击服务别名,右键“更新web引用”。运行项目时若出现类似“权限。”的错误时,请按照给出的提示(vs 2008中会有建议操作的,点下就ok了)更正。好像在调试过程中不能在调用方法时单步调试。上面是发布与调用web服务,而WCF服务是类似的(建立是应选择WCF服务,不要选择新建”-“网站”,在对话框中选择“ASP.NET Web服务”)在web service中如何得到客户端IP, 通过代理,获取真实的ipif(Context.Request.ServerVariablesHTT

10、P_VIA!=null) ip=Context.Request.ServerVariablesHTTP_X_FORWARDED_FOR.ToString(); else ip=Context.Request.ServerVariablesREMOTE_ADDR.ToString(); C#WinForm利用Web Service API查询数据库并显示到客户端我们知道C#的Web ServiceAPI的返回值可以是DataSet类型,这就使得我们可以通过Web Service API来查询数据库,这个功能将成为我们许多应用的基础。下面我们用一个简单的Winform调用的例子来说明这个问题。首先

11、我们有一个SQL Server2000数据库book在服务器webserviceserver上,book库中有张表bookinfo,包含书名、作者、价格等字段,数据库用户sa,密码123456。我们利用VS2005创建一个Web Service项目并发布出去,这里不再详述如何建立和发布,如有不清楚的地方请参阅相关资料。也可以参考我的另两篇文章: SERVICE) Service API)我们在项目的Service.cs里编写一个查询数据库的API,为了简化问题,我们编写的这个API只接受一个字符串参数,用来在书名字段做前方匹配的查询,返回一个DataSet,这个DataSet中包含一个名为bo

12、okinfo的DataTable,bookinfo中含有书名、作者和价格字段,代码如下:usingSystem;usingSystem.Web;usingSystem.Web.Services;usingSystem.Web.Services.Protocols;usingSystem.Data;usingSystem.Data.SqlClient;WebService(Namespace=WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)publicclassService:System.Web.Services.WebServ

13、ice/定义一个sqlconnection连接成员SqlConnectionsqlconn=newSqlConnection(Server=webserviceserver;InitialCatalog=book;uid=sa;pwd=123456);/貌似必须用sa方式登陆啊publicService()/如果使用设计的组件,请取消注释以下行/InitializeComponent();WebMethodpublicstringHelloWorld()return欢迎使用我的WEB服务!;WebMethodpublicDataSetsearchBook(stringbookname)sqlc

14、onn.Open();stringsql=selecttop50书名,作者,价格frombookinfowhere书名like+bookname+%orderbyiddesc;SqlDataAdapterda=newSqlDataAdapter(sql,sqlconn);DataSetds=newDataSet();da.Fill(ds,bookinfo);returnds;编写好后将Web Service发布出去。现在我们来建立一个winform的Windows应用程序项目,并在项目中将我们刚刚发布的WEB Service做为一个WEB引用添加进来。在项目窗体中创建一个textbox控件用来

15、输入查询内容,一个名为btnBookSearch的查询button,一个DataGridView控件用来绑定获得的dataset。双击查询button编写如下事件处理函数。privatevoidbtnBookSearch_Click(objectsender,EventArgse)/定义一个WebService对象,WebReference是我们添加WEB引用时取的名称WebReference.Servicews=newcqust.libmanage.WebReference.Service();this.dataGridViewBookInfo.AutoGenerateColumns=tru

16、e;/将返回的dataset绑定到datagridview上this.dataGridViewBookInfo.DataSource=ws.searchBook(this.textBoxSearchString.Text);/指定显示的datatablethis.dataGridViewBookInfo.DataMember=bookinfo;编译项目并行,你将会在datagridview中看到查询的结果。我们的例子非常简单,没有考虑诸如异常捕获、异步调用、安全性等问题,但是它说明了利用Web Service API查询数据库是非常简单的,通过对这个简单API的扩展,你可以实现非常复杂的数据库

17、查询。C/S框架-发布和部署WebService 一、C/S框架-WebService部署图如下图所示,C/S框架由Client端及WebServer端组成。客户端引用WebService接口(可以在CSFramework_Client.WebServices.dll.config文件内配置引用地址)。服务端(WebServer)建立在传统的IIS服务器之上。 服务端就是一个网站,提供一组服务接口给客户端调用,如客户端请求频繁负荷较大的情况下建议WebServer与数据库服务器分离。 二、发布WebService1.Begin Publish Website. 2.选择发布的目录(作为网站的虚

18、拟目录) 3.Publish Succeeded. 4.查看已发布的文件. 5.新建网站(WebServer). 6.输入网站名称. 7.将网站虚拟目录设置为刚才发布的目录. 8.设置网站访问权限. 9.网站虚拟目录创建成功. 10.查看新建的网站. 11.游览网站内容. 12.打开一个WebService页面(DataDictionarySystem.asmx)查看Web方法. 13.在IE内打开一个WebService站点. 二、C/S框架-配置客户端14.用记事本打CSFramework_Client.WebServices.dll.config文件,修改WebService引用地址.

19、15.替换WebService引用地址. 16.运行客户端程序CSFramework_Client.Main.exe. 三、数据库连接配置因开发环境中使用SQL Express 2005数据库,SQL授权方式为:Integrated Security=True;当发布WebService后需要更改连接字符串:User ID=sa;password=csframework; 使用SQL授权登录。 (貌似只能用sa用户名登陆,反正用windows方式登陆不可以)开发环境: ConnectionString-IDE=server=.SQLEXPRESS;AttachDbFileName=D:My S

20、ourceCodeCSharpCSFramework-WebService-CHT-正式版source.clientdebugDatabaseCS_WebServiceII.mdf;Integrated Security=True; 正式环境: ConnectionString=server=.SQLEXPRESS;User ID=sa;password=csframework;AttachDbFileName=D:My SourceCodeCSharpCSFramework-WebService-CHT-正式版source.clientdebugDatabaseCS_WebServiceII

21、.mdf; 17.当客户端无法连接服务端时跟踪程序出错解决方案: Login failed for user sa. The user is not associated with a trusted SQL Server connection 1。出现这个问题的一个原因是sql server没有启用混合登录模式,可在数据库属性更改登录模式为Windows验证和用户验证混合模式,更改模式后一定要重启sql server服务器 2。另一个可能的原因是根本就不存在这个用户,新建该用户即可解决登录问题。 18.打开SQL Express 或 SQL 2005/2008 Enterprice Vers

22、ion,在服务器树结点右键打开Properties窗体. 19.更改登录模式为Windows验证和用户验证混合模式. 20.SQL Server Configuration Manager. 21.重启SQL服务. 22.恭喜!您从此学会了发布和部署WebService! 网上的动态调用WebService一个非常好的例子。今天調適一個webservice,發琭我的winform一直都在調用局域緒的webservice,突然想到,要是我的winform程序,想要運行在不同緒斷,那應該如何配置我的webservice?方案一:1.用一個公用的webservice.就是把webservice發布到

23、internet上,然後,winform調用inernet上的webservice.2.在每個局域緒都建立webservice,動慴的配置webservice. 每個webservice引用后,都會生成一個reference.cs,然後,在reference.cs裡面,更改url或者讀取事先寫在.config文件的url,編譯成各個局域緒的運行程序.3.建立webservice虚拟代理,使用xml登记webservice的引用地址。实现动态引用webservice.!using system;using system.reflection ;using system.web .services

24、 .description ;using microsoft.csharp;using system.codedom ;using piler ;using system.io ;using system.text ;using system.xml ;using ;using webserviceproxy;namespace webserviceproxy public class webserviceproxy private assembly _ass = null; private string _protocolname = soap; private string _srcwsp

25、roxy = string.empty; public assembly assembly get return _ass; public string protocolname get return _protocolname; set _protocolname = value; public string srcwsproxy get return _srcwsproxy; public webserviceproxy () public webserviceproxy (string wsdlsourcename) assemblyfromwsdl(getwsdl(wsdlsource

26、name); public string wsdlfromurl(string url) webrequest req = webrequest.create(url); webresponse result = req.getresponse(); stream receivestream = result.getresponsestream(); encoding encode = system.text.encoding.getencoding(utf-8); streamreader sr = new streamreader( receivestream, encode ); str

27、ing strwsdl = sr.readtoend(); return strwsdl; public string getwsdl(string source) if(source.startswith(?xml version) = true) return source; else if(source.startswith(http:/) = true) return wsdlfromurl(source); return wsdlfromfile(source); public string wsdlfromfile(string filefullpathname) fileinfo fi = new fileinfo(filefullpathname); if(fi.extension = wsdl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1